Exec () в PHP на Windows без открытия cmd.exe Слабость безопасности? - PullRequest
2 голосов
/ 26 апреля 2009

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

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

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

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

Можно ли каким-либо образом с помощью сценария PHP под IIS вызвать Exe, не открывая cmd.exe для пользователя анонимного IIS?

Помощь оценена.

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

Мой генератор лицензионных ключей - WinLicense, у меня есть исполняемый файл.

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

shell_exec ("C: \ inetpub \ wwwroot \ test.com \ testLicense.exe \" ". $ RegName." \ ""); // или exec () или system ()

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

1 Ответ

2 голосов
/ 26 апреля 2009

Фильтруйте переменные, которые вы передаете в exec () очень тщательно.

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

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

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

...