2009-04-26 2 views
2

У меня есть требование, чтобы веб-скрипт выполнял exe-файл, а затем возвращал результаты на exe на веб-запрос.Exec() в PHP на Windows без открытия cmd.exe Недостаток безопасности?

Я могу либо отследить результат exe, либо изменить exe, чтобы сохранить его результаты в файле, а затем прочитать файл, чтобы отследить веб-запрос.

Проблема заключается в том, что при использовании php под IIS все функции функции exec() shell_execute() системы() оболочки exec() выходят из строя с помощью «Невозможно fork», потому что анонимный пользователь IIS IUSER_% COMPUTER_NAME% не имеет доступа к окнам C: \ windows \ system32 \ cmd.exe

Это можно исправить, изменив разрешения пользователя анонимного пользователя IIS для cmd.exe, но это значительное ослабление безопасности (я считаю).

Есть ли способ, которым я могу иметь скрипт PHP под IIS, вызвать Exe, не открывая cmd.exe для пользователя IIS anonymouse?

Помогите оценить.

Зачем мне это нужно? У меня есть генератор серийных ключей, когда somone покупает мой продукт с помощью кредитной карты, моему платежному процессору нужно вызвать URL-адрес, передающий имя лицензии в качестве параметра и имеющий серийный номер для возвращаемого имени лицензии.

My key key generator - это WinLicense, у которого есть exe.

мне нужно запустить что-то вроде

shell_exec:; ("C \ Inetpub \ Wwwroot \ test.com \ testLicense.exe \" "$ регистр ' "\""..) // или Exec() или системы()

(testLicense.exe сохраняет результат в файле, который мой PHP скрипт может затем эхо)

+0

Зачем вам нужно открывать CMD.EXE? Я знаю, что это ваш вопрос, но я хотел бы понять, зачем вам это нужно? – toto

ответ

2

Фильтр переменные вы подаете в EXEC() очень тщательно.

используют целые числа только для числовой информации

, если это использование файла file_exists(), чтобы подтвердить это реальное имя файла

, если это использование строки регулярное выражение и удалить символы, такие как "и", а \ и; так любые команды в нем не запускаются.

Смежные вопросы