如何避免"PHP注入"

Seb*_*rez 2 php security

我有这个脚本

<?php $number = %value%; ?>
Run Code Online (Sandbox Code Playgroud)

%value%标记将被用户输入的DB上的值替换.

我担心的是有人输入的内容如下:

1; echo phpinfo()
Run Code Online (Sandbox Code Playgroud)

替换的结果将是:

<?php $number = 1; echo phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

这显然是一种安全风险.

是否有一个函数来逃避php脚本字符或我可以使用的东西?

提前致谢.

上下文

这是我正在研究的CMS上的工具,通常工具生成添加到某些PHP文件的HTML代码.

在这种情况下,此工具从RSS通道生成HTML结构.我们要求用户输入RSS URL和要显示的提要数,我们将这些值替换为PHP脚本,并使用它们获取提要并以HTML结构显示它们.

像这样:

<?php
  $url = "URL"; //comes from DB
  $number = N; //comes from DB
  $feeds = getFeeds($url, $number);
  ...
?>
Run Code Online (Sandbox Code Playgroud)

cod*_*gar 10

你上面描述的机制是有缺陷的.PHP就是这样不行.不会执行任何用户输入(或更准确地说,由PHP解释),除非:

  • 你通过eval()电话运行它
  • 您将代码和用户输入的组合保存为PHP文件,然后执行它

你应该担心的是SQL注入,这是一个非常不同的东西.

如果你指的是一个类似于子弹#2的场景,你很可能从设计角度做一些非常错误的事情,你应该重新思考你的方法.

  • 你不应该这样的事情.只是(我不能强调这一点)不要.只有你可以解释你需要它,并且它不仅仅是通过框架这样做. (3认同)