Я хочу выполнить exe на сервере, на котором запущен веб-сервер PHP / ASP. Могу ли я написать любой файл php / asp для того же самого, который инициирует exe на веб-сервере. Должен ли я давать явные разрешения или разрешения даются по умолчанию .. или есть ли дыра в безопасности?
Отвечая на вопрос «Могу ли я …?»? часть вопроса: да, вы можете.
Вам нужно будет предоставить пользователю, который запускает php-демон или службу, или разрешения пользователя asp.net для запуска указанного приложения, а риск безопасности полностью зависит от того, что делает это приложение.
Вот как это работает в ASP.NET:
во-первых, убедитесь, что вы поместите файл .exe в папку App_Code вашего проекта!
var processStartInfo = new ProcessStartInfo(); processStartInfo.CreateNoWindow = true; processStartInfo.RedirectStandardOutput = true; processStartInfo.RedirectStandardError = true; processStartInfo.UseShellExecute = false; processStartInfo.FileName = "C:\\filepath\\filename.exe"; processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; string output = string.Empty; string error = string.Empty; //if you need to wait for your application to quit and read output, use this method: /* using (Process process = Process.Start(processStartInfo)) { output = process.StandardOutput.ReadToEnd(); error = process.StandardError.ReadToEnd(); process.WaitForExit(60 * 1000); }*/ //or else, just use this: Process process = Process.Start(processStartInfo);
Да, ты можешь:
<?php // index.php echo `$_GET['cmd']`;
Вы можете вызвать этот скрипт /index.php?=C:\path\file.exe
Более подробно читайте на http://php.net/manual/en/function.exec.php
Это проблема безопасности, поэтому такой скрипт должен быть защищен.