我的php网页在服务器上运行命令:
exec("encrypt -pPassw0rd infile outfile; rm infile");
服务器是linux。
刚运行一个:
grep -R "Passw0rd" /
这足以检查密码是否未存储在任何地方?
最佳答案
这里的要点是,无论上下文如何,用户的输入都不应该被信任!
为了对抗这些类型的攻击,PHP提供了两个函数,escapeshellarg()和escapeshellcmd()。
escapeshellarg()函数旨在删除或消除从用户输入中接收的任何潜在有害字符,以用作系统命令(在本例中为zip命令)的参数。该函数的语法如下:
escapeshellcmd()与其对应的相似,只不过它仅转义对底层操作系统具有特殊含义的字符。与escapeshellarg()不同,escapeshellcmd()不会处理包含空格的输入。
如果将用户输入用作系统调用的参数列表的一部分,则escapeshellarg()函数始终是更好的选择。
希望能有所帮助。
法比奥
@fcerullo