2009-04-26 28 views
2

我需要一个web脚本来执行一个exe文件,然后将结果 上的exe文件返回给web请求。在没有打开cmd.exe的情况下在Windows上的PHP执行()?安全弱点?

我既可以回显exe的结果,也可以修改exe以将结果保存到文件中,然后读取该文件以回显Web请求。

问题是,在IIS下使用php所有exec()shell_execute()system()类型的函数出错'无法分叉',因为IIS匿名用户IUSER_%COMPUTER_NAME%无法访问C:\ windows \ system32 \ cmd.exe

这可以通过更改此IIS匿名用户的权限为cmd.exe修复,但 这是显着的安全弱化(我相信)。

有没有什么办法可以通过IIS下的PHP脚本调用一个Exe而不需要打开cmd.exe到IIS anonymouse用户?

帮助赞赏。

为什么我需要这样做?我有一个序列密钥生成器,当somone通过信用卡购买我的产品时,我的付款处理器需要调用一个url,将许可证名称作为参数传递,并为该许可证名称返回一个序列号。

我的许可证密钥生成器是WinLicense,我有一个exe。

我需要像

了shell_exec运行的东西:( “C:\的Inetpub \ wwwroot的\ test.com \ testLicense.exe \” “$寄存器名 ”\“”。) //或者exec()或系统()

(testLicense.exe结果存储在一个文件,我的PHP脚本就可以呼应)

+0

为什么你需要打开CMD.EXE?我知道这是你的问题,但我想明白你为什么需要这样做? – toto 2009-04-26 01:12:21

回答

2

筛选你喂变量给exec()非常谨慎。

使用只能为整数的数字信息

,如果它是一个文件名使用file_exists(),以确认它是一个真正的文件名

,如果它是一个字符串使用正则表达式和删除像人物“和”和\和;等等任何命令都不会运行

相关问题