如何拒絕對某些文件的網路訪問?
我需要做一個有點奇怪的操作。
首先,我在 Debian、apache2 上執行(以使用者 www-data 的身份“執行”)
所以,我有帶有 .txt 或 .ini 或任何副檔名的簡單文本文件,沒關係。
這些文件位於具有如下結構的子文件夾中:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar.txt
因此,文件名始終相同,“層次結構”同上,只需更改文件夾的名稱:/folder-name-static/folder-name-dinamyc/file-name-static.txt
我應該做的是(我認為)相對簡單:我必須能夠通過伺服器上的程序(例如python,php)讀取該文件,但是如果我嘗試通過瀏覽器檢索文件內容(數字化url www. example.com/folder1/car/foobar.txt,或通過 cUrl 等。)我必須得到一個禁止的錯誤,或者其他什麼,但不能訪問文件。
即使通過 FTP 訪問這些文件也是“隱藏的”,或者無論如何都無法下載(至少我與 ftp 根和使用者數據一起使用),這也很好
我能怎麼做?
我在網上找到了這個,放在文件.htaccess中:
<Files File.txt> Order allow, deny Deny from all </ Files>
它似乎有效,但前提是文件位於網路根目錄(www.example.com / myfile.txt)中,而不是子文件夾中。此外,第二級的文件夾(www.example.com/folder1/fruit /foobar.txt)將被動態創建。我想避免不時更改.htaccess文件。
可以為所有具有給定名稱的文件創建類似的規則,該名稱位於 *www.example.com/folder-name-static/ *folder-name-dinamyc/file-name -static.txt,這些部分都是一樣的,只是那一個變化?
編輯:
正如 Dave Drager 所說,我可以將這些文件保留在 Web 可訪問目錄之外。但是這些目錄也將包含其他文件、圖像和我的使用者使用的東西,所以我只是盡量不要有重複的文件夾系統,比如:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here] /var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here] /var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here] //and, then for the 'secrets' files: /folder1/data/car/foobar.txt /folder1/data/cycle/foobar.txt /folder1/data/fish/foobar.txt
您可以使用Files / FilesMatch和正則表達式:
<Files ~ "\.txt$"> Order allow,deny Deny from all </Files>
這就是保護 .htpasswd 的方式。
或將 .txt 的任何訪問重定向到 404:
RedirectMatch 404 \.txt$
從訂單文件部分:
關鍵字只能用逗號分隔;它們之間不允許有空格。
所以以下是不正確的:
<Files File.txt> Order allow, deny Deny from all </ Files>
以下是(更多)正確的
<Files "File.txt"> Order allow,deny Deny from all </Files>