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