在PHP exec命令中使用时存储的密码在哪里?

时间:2013-03-02 18:42:39

标签: php linux security

我的php网页在服务器上运行命令:

exec("encrypt -pPassw0rd infile outfile; rm infile");

服务器是linux。

刚跑了一个:

grep -R "Passw0rd" /

这足以检查密码是否未存储在任何地方?

1 个答案:

答案 0 :(得分:0)

这里的要点是,用户的输入,无论在什么情况下,都不应该被信任!

为了对抗这些类型的攻击,PHP提供了两个函数,escapeshellarg()和escapeshellcmd()。

escapeshellarg()函数旨在删除或以其他方式消除从用户输入接收的任何可能有害的字符,以用作系统命令的参数(在我们的示例中为zip命令)。该函数的语法如下:

escapeshellcmd()与其对应类似,只不过它只会转义对底层操作系统有特殊含义的字符。与escapeshellarg()不同,escapeshellcmd()不会处理包含空格的输入。

如果用户输入将用作系统调用的参数列表的一部分,则escapeshellarg()函数始终是更好的选择。

希望有所帮助。

的Fabio @fcerullo