2012-07-12 131 views
0

可能重複:
Preventing direct access to php files阻止訪問文件

我要阻止對某些文件的直接訪問,使他們只能通過PHP通過includerequire使用。

我做的每個文件的第一行是什麼:

<?php 
if(stristr(__FILE__,substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],"/")+1))){ 
    header("HTTP/1.0 404 Not Found"); 
    exit; 
} 
?> 

是,這樣做的一個很好的方式,還是有更好的辦法?

謝謝。

+0

這不是真的,那些關於.htaccess文件。另外我要求確認我使用PHP自己的做法,再次**不** ** htaccess或與服務器相關的配置。 – Francisc 2012-07-12 10:42:04

+0

我明確標記爲重複的問題沒有提及.htaccess文件。在這個問題上接受的答案沒有提及.htaccess文件(對它的評論確實存在,但是它對已刪除評論的回覆有異議)。你問「有沒有更好的方法」 - 通用的「我該怎麼做?」問題通常意味着「什麼是最好的方式」。如果你只是想要一個代碼審查,那麼你的問題是本地化的StackOverflow,你應該問[代碼審查](http://codereview.stackexchange.com/)。 – Quentin 2012-07-12 10:51:54

+0

我不知道如何看到你標記爲「完全重複」的問題,但是來自Quetin的鏈接是關於服務器配置的問題:將文件移動到公共HTML文件夾之外。我試圖瞭解我發佈的PHP代碼是否適合拒絕訪問,如果不是的話。簡單的問題,簡單的答案(未來)。回顧一下:*我正在尋找一個PHP解決方案。* – Francisc 2012-07-12 10:54:17

回答

1

一個更好的選擇是將文件移出網站公共區域到私人目錄,然後使用set_include_path(或等效的服務器配置)允許includerequre找到它們。

+0

爲什麼這樣更好? PHP可以被欺騙以允許訪問?或者你的意思是隻比將這些代碼行添加到每個文件更簡單?謝謝。 – Francisc 2012-07-12 11:08:03