2012-07-06 134 views
0

我有我的.htaccess文件,並且我有一個包含配置文件的文件夾,它們包含敏感內容,例如數據庫的細節等。我想知道的是,我怎樣才能阻止從瀏覽器的訪問,但允許他們通過我的腳本訪問?允許從代碼訪問文件,但阻止瀏覽器?

我知道這可以在PHP文件本身內部實現,但我寧願儘可能使用.htaccess方法。

這實際上是可以做到的嗎?我曾嘗試過,但是在拒絕從瀏覽器訪問文件的過程中,它也拒絕了編碼的訪問。

我已經看過這個之前,我遇到的一些答案建議改變擴展到像.inc,然後拒絕訪問。但是,我遇到的一些問題是:a)它會立即發出警告,無論出於何種原因,它都可以看到該文件名,它是一個配置文件。另外,b)如果拒絕代碼中斷,瀏覽器將不會將其解析爲PHP文件,而是將文件解析爲inc文件,這意味着它將在瀏覽器中打印代碼。

基本上,這可以在.htaccess文件中完成,還是我需要在每個配置文件的標題中放置一些東西?

回答

1

將這些文件放到Web服務器的文檔根目錄之外。

您仍然可以通過服務器端腳本訪問它們,但這確保了不能從外部直接訪問它們。

+0

這可能工作,除了我在同一臺服務器上有多個站點,並且我想保留配置文件與適當的目錄。有沒有其他方法?否則,我會使用這種方法。 – 2012-07-06 04:50:10

+0

有一個目錄結構是非常常見的,這樣web訪問文件實際上就是應用程序根目錄的子目錄。例如'yourapp/htdocs'和'yourapp/conf'。 – Brad 2012-07-06 04:52:13

+1

實際上,這聽起來像個好主意。我會給它一個鏡頭並回報。乾杯。 – 2012-07-06 05:08:50

0

請使用框架,這些問題不需要存在。如果你堅持,寫一個.htaccess將每個請求重定向到根目錄中的一個index.php,然後有更多的邏輯來確定該請求是否用於有效文件幷包含它們,否則生成404或403 。如果你需要靜態文件的性能,那麼使用RewriteCond從index.php檢查中排除特定的目錄或文件類型。

+0

我不知道剛剛說的是什麼。請更清楚你想要解釋的內容。 – 2012-07-06 04:46:39

+0

@Spiritfyre:我的答案在發佈答案後不到一分鐘,你甚至不用花一分鐘時間閱讀,所以不理解它是有點期待的。什麼不清楚? – 2012-07-06 04:51:08

+0

我讀了三遍。你是什​​麼意思使用框架?如果可以避免的話,我寧願不必嘗試和過濾我的目錄中的每個文件。 – 2012-07-06 05:08:16

0

傳統的建議是將這些文件放在「Web服務器的文檔根目錄之外」。這一切都很好,但許多共享主機產品只能提供對public_html目錄的寫入權限。

我用一個簡單的約定:任何私人內容(即不URI尋址)由下劃線或目錄中的這名前綴用下劃線(如:_private_include)前綴。然後我包括此重寫規則在我DOCROOT .htaccess文件:

# if a forbidden directory or file name (starting with a . or /) 
# then raise 404 Fatal return 

RewriteRule (^|/)[_.] -           [F] 

記住,你需要用RewriteEngine On前綴和/或包含此在任何.htaccess文件啓用發動機頂部。

請注意,「。」前綴選取文件,如.htaccess

相關問題