PHP如何防止黑客利用注入漏洞执行危险的命令

来源:互联网 发布:博客源码那个好 编辑:程序博客网 时间:2024/05/17 13:06
1、清理输入
在将用户输入的字符串作为命令的一部分提交给系统执行前,为了防止被黑客利用,所以,需要将输入的命令字符串处理一下。
例如有下列代码:
$document = $_POST['userurl'];
passthru("htmldoc --webpage -f webpage.pdf $document);
当程序执行时,若黑客提交的userurl包含下列数据:
http://www.wj.com/ ; cd /var/www/; rm -rf *
那么大部分UNIX shell会将这个passthru()请求解释为3个单独的命令:
htmldoc --webpage -f webpage.pdf http://www.wj.com/
cd /var/www
rm -rf *
后面两条命令为将整个web文档全部删除。为了防止这种情况发生,所以需要让PHP在解析拼接输入字符的时候,把所有输入字符看成一个完整的字符串,就不会发生这种情况了,为此需要调用函数escapeshellarg()来实现。
定义:string escapeshellarg(string arguments)
说明:返回的值为传入值两头加上单引号。

另一个函数也可以起到类似的预防作用,escapeshellcmd(),其与escapeshellarg()的差异在于他是对传入字符进行转义来清理掉可能的危险。
定义:string escapeshellcmd(string command)

0 0