2013-09-25 73 views
3

我在我的webshare的根目錄中有一個文件夾,用於存放半機密的pdf文檔。我希望訪問該文件夾或其文件的任何人都能獲得權限錯誤。那是易於安裝和我有它htaccess拒絕訪問文件,除非從服務器上的特定子文件夾訪問

<FilesMatch "\.pdf$"> 
Order Allow,Deny 
Deny from all 
</FilesMatch> 

工作但是我想,它包含PHP腳本能夠鏈接到這些PDF文件在服務器上的子文件夾。注意;我不希望PHP能夠在服務器內部讀取文件,但對於直接連接這些受限制文件的http請求突然變得可能。

我讀過子文件夾中的htaccess文件可以壓倒在根文件夾htaccess文件中設置的文件夾路徑更高的規則。爲此,我已經用PHP腳本在特定的子文件夾中設置了一個htaccess文件(使用全部允許),但它似乎不起作用。

回答

2

如果您有/secret/文件夾中的PDF文件,並且您有該文件夾中的htaccess文件,該文件是會得到evaulated隨時隨地的PDF被訪問,不管誰在訪問它的,也可從。唯一的區別就是網絡服務器和htaccess文件中的內容可以告訴訪問那些從谷歌搜索結果列表中找到PDF的人與你設置了鏈接到他們的頁面之間的唯一區別是引用者。

從谷歌,引用站點將是這樣的:https://www.google.com/search?q=secret+pdf(或東西)

從您設置的頁面,引用者將類似於頁面,你設置的URL。就是這樣,沒有其他區別。這意味着您可以與引薦者進行匹配,以查看是否有人點擊了您的PDF鏈接或通過您的網頁。問題是,任何人都可以讓引薦人得到他們想要的任何東西。它可以完全僞造任何東西,所以如果這是爲了防止未經授權的訪問,那麼HTTP引用者就是更糟糕的方式。

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/your_page.html 
RewriteRule \.pdf$ - [L,F] 

在您的PDF目錄將阻止其他任何地方,除了鏈接htaccess文件這些規則:http://www.yourdomain.com/your_page.html,除非引用者是僞造的。

+0

請記住,欺騙HTTP引用是可能的話,看到這個問題(http://stackoverflow.com/questions/3104647/how-to-spoof-http-referer) – Stan

+0

嗨喬恩林。感謝您的答覆。確認;使用引用代碼絕對是我可以檢測文件訪問的唯一方法? – AdamJones

+0

@AdamJones只能告訴你哪裏有人點擊鏈接,訪問文件是訪問文件,引用者告訴你從哪裏訪問它 –