簡體   English   中英

如何保護文件免受外界侵害?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM