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)
在将用户输入的字符串作为命令的一部分提交给系统执行前,为了防止被黑客利用,所以,需要将输入的命令字符串处理一下。
例如有下列代码:
$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和crontab命令作Linux自动执行脚本
- 如何让PHP以root权限执行系统命令
- 关于PHP的漏洞以及如何防止PHP漏洞?
- PHP+MYSQL如何防止脚本注入攻击
- php 无法执行外部命令 如何调用外部命令
- 如何防止 PHP SQL 注入攻击
- 关于PHP的漏洞以及如何防止PHP漏洞?
- 利用PHP程序设定防止MySQL注入或HTML表单滥用
- 如何防止ASP.NET应用程序中的SQL注入安全漏洞
- php如何防止SQL注入
- PHP如何执行Linux系统命令呢?system();exec();popen();函数
- PHP如何防止注入及开发安全
- 如何防止ASP.NET应用程序中的SQL注入安全漏洞
- 如何利用内置PHP灵活性执行外部程序
- php网站如何防止sql注入?(PHP注入的安全规范)
- 关于PHP的漏洞以及如何防止PHP漏洞?
- dedecms plus/search.php 注入漏洞利用EXP