[英]Protect files with .htaccess from the outside, while still allowing internal access
[英]How to protect files from outside?
我自己做了一個非常小的CMS。 登錄后設置會話。
CMS包含某些圖像,php頁面等。
這些頁面還可以包括將數據添加到數據庫的表單。
現在的問題是,您實際上可以使用地址訪問顯示表單的頁面,即;
domain.com/mycms/includes/addpage.php
您會如何建議保護這一點?
注意:登錄后,一切都必須正常進行,只是從外面可能不會顯示該表格。 我可以檢查該會話是否存在,但我想知道是否有更好和更容易的方法。
首先,如果要包含PHP文件,則實際上不應將其放在公共Web根目錄下 。
如果無法做到這一點,另一種方法是在index.php
定義一個常量 (假設您將其用作主要入口點)並檢查是否在每個包含文件中都設置了該常量,以防止直接訪問這些常量。文件。
例如:
// index.php:
define('INDEX_LOADED', true);
// /includes/addpage.php:
if (!defined('INDEX_LOADED')) die('no direct access allowed');
旨在將您的文件放入
domain.com/ private /includes/addpage.php
然后從您的頁面執行類似
include('../ private / includes / addpage');
對於不應該從外部訪問的PHP文件,我總是使用擴展名.inc.php。 然后,我拒絕從外部看到該擴展名。 對於apache,您可以在主目錄的.htaccess文件中執行此操作:
<Files ~ "\.inc\.php$">
Order allow,deny
Deny from all
</Files>
另外,如果您使用某些框架或具有類(或包含)目錄,則可以拒絕對整個目錄的訪問,如下所示(apache):
<Location ~ "^/(classes|framework)"
Order allow,deny
Deny from all
</Location>
其他Web服務器還有其他禁止文件的方法。 如果您希望它具有通用性和便攜性-Aron Rotteveel的建議是最好的。
您可以保留僅包含類聲明的文件不受保護-如果它們從外部運行,則不會運行任何代碼。 確保主機已關閉 php ini設置display_errors
如果有必要將私有文件保留在公用文件夾中,則可以使用CHMOD權限(例如700)對其進行保護
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.