[英]How to avoid “PHP injection”
我有这个脚本
<?php $number = %value%; ?>
%value%标记将被用户输入的DB上的值替换。
我担心的是有人输入的内容如下:
1; echo phpinfo()
替换的结果将是:
<?php $number = 1; echo phpinfo(); ?>
这显然是一种安全风险。
是否有一个函数来逃避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);
...
?>
你上面描述的机制是有缺陷的。 PHP就是这样不行。 不会执行任何用户输入(或更准确地说,由PHP解释),除非:
eval()
调用运行它 你应该担心的是SQL注入,这是一个非常不同的东西。
如果你指的是一个类似于子弹#2的场景,你很可能从设计角度做一些非常错误的事情,你应该重新思考你的方法。
正如code_burgar所提到的......这种设计是完全有缺陷的。 应该没有理由动态构建服务器执行的文件。 您应该从db中提取记录集,循环遍历它并为每条记录执行getFeeds()函数。 这样做不会执行任何db提供的数据,除非..再次作为cod_burgar说..你使用eval()函数。
通常,您希望在任何程序中清理所有用户提供的输入。 EG:如果要求一个5位数字,在将数据分配给变量之前,确认它实际上是一个整数,并确保它只有5位数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.