我正在構建一個CMS,並且主頁面(index.php
)由CMS目錄中的很多小文件構建而成。例如,該結構可以是這樣的:如何使某些文件僅適用於PHP腳本?
index.php
menu/admin/content.php
config.php
requests.php
menu/tools/content.php
config.php
requests.php
menu/users/content.php
config.php
requests.php
當我在根目錄訪問index.php
,我得到一個基於$_GET
參數不同的結果。例如,當我訪問index.php?section=tools
時,索引文件會從menu/tools/
文件夾中加載content
,cofnig
和requests
文件。
現在來解決問題。 index.php
頁面本身僅供登錄用戶訪問,但出於安全原因,我想要禁用menu
文件夾中的所有內容,而不是通過其他任何方式訪問,而不是通過php的include功能訪問。
爲了證明會發生什麼:如果我要刪除的東西,我用index.php?section=tools&delete=5
,並在menu/tools/requests.php
文件,如果$_GET['delete']
設爲我會檢查,然後從數據庫中刪除的5號。現在的問題是,如果有人知道實際結構,他可以像這樣訪問requests.php
文件:site.com/admin/menu/tools/requests.php?delete=5
,然後用這種方法破解網站。
有沒有辦法來防止這種可能的攻擊?有些東西拒絕訪問菜單文件夾中的文件,但仍然讓他們從我的index.php文件訪問? Htaccess也許?我真的不想在「菜單」文件夾中對每個文件都進行檢查(如果設置會話/ cookie),儘管這可能是一個可行的解決方案。
index.php?section = tools&delete = 5本身就是一個壞主意。我現在找不到這個參考資料,但是有一個案例我讀到了整個網站被一個仁慈的機器人銷燬的地方,因爲每個項目都有一個「刪除」鏈接。改爲使用POST請求。 – TecBrat 2014-06-16 14:24:43