PHP-如何避免php中system(),exec(),passthru()等函数带来的安全隐患

PHP-如何避免php中system(),exec(),passthru()等函数带来的安全隐患

清晨说ぺ晚安 发布于 2017-02-22 字数 137 浏览 1135 回复 2

这些函数大家都知道是会带来安全隐患的,但是目前来说又不得不用,在这种情况下,该如何避免设计上出现的漏洞呢,请高人给出实际性的建议!

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-06-01 1 楼

如果你的网站需要使用到这些系统命令函数,那么就必须启用它们,就只能做好安全了

PHP为我们提供了两个函数:EscapeShellCmd() 和 EscapeShellArg()

EscapeShellCmd()函数会把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号( ; ),重定向(>)和从文件读入(<)等。

EscapeShellArg()函数是用来处理命令的参数的。它在给定的字符串两边加上单引号,并把字符串中的单引号转义,这样这个字符串就可以安全地作为命令的参数。

还有一个问题就是系统命令有可能执行会超时而影响网站的使用,这个问题也可以通过把这个系统命令放到后台去执行。
system("/usr/local/bin/order_proc > /tmp/null &");
这样用户在前端就不用等待命令执行的返回结果。