我想弄清楚如何拒絕用戶查看文本文件,但仍然訪問該文件(讀取)與PHP?有沒有辦法用htaccess來做到這一點? 編輯:新的文件安全性,我想嘗試新的東西!如何拒絕所有目錄,但仍然使用PHP等腳本訪問文件?
回答
您可以輕鬆地將.htaccess文件放入要阻止的文件夾中。這個.htaccess的內容是deny from all
。那麼你的網絡服務器將不會提供這些頁面,但你仍然可以通過fopen
,file_get_contents
等訪問它們。
是的,但它仍然返回一個XML文件錯誤?爲什麼是這樣? '警告:DOMDocument :: load()[domdocument.load]' –
@Pete你使用的是相對url嗎?您不能使用絕對(http)網址,否則它將通過Apache獲取 – Paulpro
是的,我現在已經更改了大多數網址。但我的iframe和一些圖片仍然無法加載。任何想法爲什麼不呢? –
不需要爲此使用htaccess:只需使用點開始文件名,並且apache默認會自動忽略它。我使用這個技巧來隱藏php代碼的整個目錄。
例如在Vbulletin中,我使用一個簡單的.htaccess來保護includes文件夾不具有config.php可讀性。你可以做一個.htaccess文件在你想用下面保護的目錄:
<Files *.php>
order deny,allow
deny from all
</Files>
不知道如果通配符的作品,在我來說,我使用
<Files config.php>
order deny,allow
deny from all
</Files>
祝您好運!
好問題有很多相對簡單的事情你可以做。
例如,您可以在公用目錄下存儲文本文件。
公共目錄會是這樣的:
/home/site_folder/public_html/
低於公衆會是這樣的:
/home/site_folder/key/
例如一個名爲「key.ini」存儲下面公衆副鑰匙夾內容如下:
[key]
name="enter a name here"
text="enter random text here"
這個你可以撥打電話:
$ini_file = "path_to_file/key.ini"; // i.e. /home/site_folder/key/key.ini
$ini_array = parse_ini_file($ini_file);
$name = $ini_array['name'];
$text = $ini_array['text'];
但是後來.ini文件不是文本。如果您的文本文件低於公開,則通過與上面的ini文件相同的方式進行讀取將是安全的,並且您可以很容易地讀取它,假設「password.txt」文件如下所示:
$fh = fopen(password.txt,'r');
$password = fread($fh,100);
fclose($fh);
如果你想確保你可以使用一個簡單的異步方法,如這對數據同時使用上面的密鑰的key.ini文件加密文件的內容:
function getAesKey() {
if (file_exists(key.ini)) {
$args = parse_ini_file(key.ini);
if (isset($args['name']) AND isset($args['text'])) {
return md5($args['name'].$args['text']);
}
}
}
function encrypt_data($data) {
//AES256 symetric encryption
$key = getAesKey();
if(32 !== strlen($key)) $key = hash('SHA256', $key, true);
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, str_repeat("\0", 16));
}
注意,一旦文件被創建,你可能希望改變它的許可ns只讀。
因此,像這樣將創建該文件並添加加密內容:
$fh = fopen(password.txt, "w"); //Open for writing
fwrite($fh, encrypt_data("My very secure password"));
fclose($fp);
功能以解密內容:
function decrypt_data($data) {
$key = getAesKey();
if(32 !== strlen($key)) $key = hash('SHA256', $key, true);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, str_repeat("\0", 16));
$padding = ord($data[strlen($data) - 1]);
return substr($data, 0, -$padding);
}
你可以添加一個進一步的函數返回的實際內容而不是每次寫出所有代碼:
function getPassword() {
$fh = fopen(password.txt, 'r');
$password = fread($fh,100);
fclose($fh);
return decrypt_data($password);
}
其中意味着你這樣稱呼它:
$password = getPassword();
密碼文件的內容,如果它被訪問,將是這個樣子:
v?��cr���bV��@
下面公開的文件,沒有人會是能夠導航到文件,如:www.yoursite.com/text_file.txt來查看它。如果他們以某種方式訪問您的服務器並找到密碼文件:他們將無法在沒有密鑰的情況下解密加密的內容。但他們可能會用你的功能輸出內容。
我通常有我的加密類文件和key.ini在其中一個include目錄中,因此在當前託管帳戶路徑中不可用。要訪問這個,你需要對服務器進行root訪問。這樣,如果有人擁有所有代碼的副本,他們將無法在沒有密鑰文件的情況下解鎖文件。
- 1. 拒絕php腳本訪問父目錄
- 2. 允許訪問「所有拒絕」目錄
- 3. 拒絕所有SVN目錄的訪問
- 4. 如何拒絕訪問用戶,但啓用PHP腳本從.htaccess
- 5. PHP腳本訪問一個目錄,否則'拒絕所有'(通過.htaccess)
- 6. 拒絕公共訪問文件夾,但仍可從其他php文件訪問
- 7. 拒絕訪問php文件,但允許子目錄中的其他php文件
- 8. 拒絕訪問目錄/文件夾
- 9. 如何拒絕父文件夾訪問子文件夾,但仍然允許直接訪問子文件夾?
- 10. Apache - 拒絕列表目錄但允許訪問所有子文件夾
- 11. PHP防止直接訪問文件,但在下載腳本仍然使用
- 12. 如何拒絕所有子目錄中的腳本執行?
- 13. 拒絕訪問除根目錄以外的所有.php文件index.php
- 14. 訪問被拒絕。 PHP腳本
- 15. 在C#中創建文件夾,應用權限,但訪問仍然被拒絕?
- 16. .htaccess拒絕目錄訪問
- 17. .htaccess拒絕直接訪問所有子目錄和文件,但仍允許從網站內鏈接
- 18. 如何拒絕訪問目錄中的所有文件,但允許從其他目錄中的特定php文件訪問?
- 19. htaccess拒絕訪問目錄如果註銷(使用php檢查)
- 20. Drupal:訪問被拒絕觸發,但我仍然得到內容
- 21. 權限被拒絕從php腳本訪問文件
- 22. 拒絕所有訪問文件,但一個ip | htaccess的
- 23. 拒絕通過瀏覽器使用htaccess訪問目錄文件
- 24. 如何保護所有目錄內容,但獲得訪問php腳本
- 25. 拒絕目錄,但沒有子目錄
- 26. wget拒絕仍然下載文件
- 27. 如何允許使用PHP下載文件,但拒絕直接訪問目錄列表
- 28. htaccess拒絕訪問所有的php文件,但重定向舊的不存在
- 29. 身份驗證/拒絕訪問目錄中的文件使用php
- 30. 拒絕訪問文件夾但無法訪問文件
它是否必須與htaccess?爲什麼不把它埋在你的文檔根目錄下? –