您的位置:首页 > 编程语言 > PHP开发

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

2015-01-04 21:53 726 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  防止 注入 漏洞 安全 PHP