你好,我有几个问题关于PHP exec()和passthru().

1)
我从来没有使用exec()in PHP但我已经看到这是有时使用imagemagick.我现在好奇,什么是其他一些共同使用哪里exec是良好的网络应用程序?

2)
大约6年前,当我第一次开始玩弄PHP我真的不知道任何东西,只是很基本的东西,我有一个网站,有损害和有人设置有自己的PHP文件,该文件是使用passthru()function通过一堆通过我的网站上免费下载的音乐或录像和我打了4 000名$带宽费用从我的主人!6年之后,我知道soo更多关于如何使用PHP但我仍然不知道这是如何发生在我之前。怎么可能有人能能够添加一个文件到我的服务器,通过不好的代码?

有帮助吗?

解决方案

1] EXEC()是真正有用的,当你:

A)希望运行PHP不具有命令等效为服务器上的程序/实用程序。例如FFMPEG被共同效用经由一个exec呼叫(对各种媒体转换的)上运行。

B)上运行的进程 - 这可以阻止或不能阻止上 - 这是非常强大的。有时你qant一个pcnt_fork虽然,或类似的,具有正确CL args作为非阻塞沿。

C)另一个例子是当我必须处理XSLT 2.0 - 我有给exec()我已经运行来处理转换的小Java服务。非常便利。 PHP不支持XSLT 2.0转换。

2]该死这是一个耻辱。 好了,很多方法。那里有一家叫脆弱的,“远程文件包含vulns”,基本上允许攻击者包括任意源,从而执行它的服务器上。 看一看: http://lwn.net/Articles/203904/

另外,如上所述,说你做类似(大大简化):

exec("someUnixUtility -f $_GET['arg1']"); 

那么,想象的攻击者,url.come ARG1 = “等等; RM -rf /”,你的代码将主要归结为:?

exec("someUnixUtility -f blah; rm -rf /");

其中在UNIX中,你瓦特/分离的命令;所以是 - 这可能是一个很大的破坏

同样的,文件的上传,想象你带的最后四个字符(.EXT),找到该扩展。 那么,怎么样像这样“exploit.php.gif”,那么你带的扩展,所以你必须exploit.php,你将它移动到你的/用户/ IMGS /文件夹。好了,所有的攻击者现在要做的就是浏览用户/ IMGS / exploit.php,他们可以运行他们想要的任何代码。你在这一点上已经拥有的。

其他提示

  1. 使用 exec 或者当你想要运行一个不同的程序。

  2. 文件passthru 说:

警告

当允许用户提供的数据将传递到这个功能,使用 escapeshellarg()escapeshellcmd() 确保用户无法招系统进入执行任意的命令。

有人可能找到一个安全洞你的脚本,这允许他们运行任何命令。使用所赋予的功能,以消毒你的输入下一个时间。记住,什么都没有从客户可以 曾经 可信任的。

exec()允许您使用编译代码,您的服务器上,这将运行比PHP快,这被解释。

所以,如果你有一个需要迅速完成大量的处理,exec()可能是有用的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top