2013-03-02 35 views
0

我的PHP网页在服务器上运行一个命令:在PHP执行命令中使用时存储的密码在哪里?

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

服务器是Linux。

刚跑一:

grep -R "Passw0rd"/

这就够了检查,如果密码不存储任何地方?

+0

一)IMO它不是使用这些PHP函数是个好主意,我总是阻止他们在PHP配置。 b)为什么要把密码存储起来? – markus 2013-03-02 18:52:29

+1

在某个日志文件中? bash的历史? – jack 2013-03-02 18:56:57

回答

0

这里的要点是,来自用户的输入,不管上下文,都不应该被信任!

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

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

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

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

希望有所帮助。

法比奥 @fcerullo

+0

密码不是来自系统生成的用户。 – jack 2013-03-06 19:20:18

相关问题