Windows上PHP中的Exec()而不打开cmd.exe安全漏洞?

Windows上PHP中的Exec()而不打开cmd.exe安全漏洞?,php,iis,system,shell-exec,Php,Iis,System,Shell Exec,我需要一个web脚本来执行exe文件,然后返回结果 在exe上发送到web请求 我可以回显exe的结果,也可以修改exe以将其结果保存到文件中,然后读取该文件以回显web请求 问题是,在IIS all exec()shell\u execute()system()类型函数下使用php时,会出现“无法分叉”错误,因为IIS匿名用户IUSER\uu%COMPUTER\u NAME%无权访问C:\windows\system32\cmd.exe 可以通过更改此IIS匿名用户对cmd.exe的权限来修复

我需要一个web脚本来执行exe文件,然后返回结果 在exe上发送到web请求

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

问题是,在IIS all exec()shell\u execute()system()类型函数下使用php时,会出现“无法分叉”错误,因为IIS匿名用户IUSER\uu%COMPUTER\u NAME%无权访问C:\windows\system32\cmd.exe

可以通过更改此IIS匿名用户对cmd.exe的权限来修复此问题,但 这是一个重大的安全削弱(我认为)

是否有任何方法可以通过IIS下的PHP脚本调用Exe,而无需向IIS匿名用户打开cmd.Exe

谢谢你的帮助

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

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

我需要做点什么

shell_exec(“C:\inetpub\wwwroot\test.com\testLicense.exe\.$regName.\”); //或exec()或system()


(testLicense.exe将结果存储在一个文件中,然后我的php脚本可以回送该文件)

非常仔细地过滤您提供给exec()的变量

仅将整数用于数字信息

如果是文件名,请使用file_exists()确认它是真实的文件名


如果是字符串,请使用正则表达式并删除“and”和\and;等字符,这样其中的任何命令都不会运行。

为什么需要打开CMD.EXE?我知道这是您的问题,但我想了解您为什么需要这样做?