Существует множество способов предотвращения SQL-инъекций и других SQL-хаков. Вы можете легко найти его в Интернете (Google Search). Конечно, PDO - одно из хороших решений. Но я хотел бы предложить вам некоторые хорошие ссылки с помощью SQL Injection.
Что такое SQL-инъекция и как предотвратить
Руководство PHP для SQL-инъекция
Microsoft объяснение SQL-инъекции и предотвращения в PHP
и некоторые другие, подобные Предотвращение SQL-инъекций с MySQL и PHP
Теперь, почему вам нужно предотвратить запрос из SQL-инъекции?
Я хотел бы сообщить вам: почему мы пытаемся предотвратить SQL-инъекцию с помощью Ниже приведен короткий пример:
Запрос для проверки подлинности входа:
$query="select * from users where email='".$_POST['email']."' and password='".$_POST['password']."' ";
Теперь, если кто-то (хакер) помещает
$_POST['email']= admin@emali.com' OR '1=1
и пароль что-либо ....
Запрос будет анализироваться в системе только до:
$query="select * from users where email='admin@emali.com' OR '1=1';
Другая часть будет отброшена. Итак, что будет? Неавторизованный пользователь (хакер) сможет войти в систему как администратор без своего пароля. Теперь он может делать все, что может сделать администратор / адрес электронной почты. См., Очень опасно, если SQL-инъекция не предотвращается.
Можно перенаправить стандартный вход и использовать StreamWriter для записи в него:
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd.exe";
info.RedirectStandardInput = true;
info.UseShellExecute = false;
p.StartInfo = info;
p.Start();
using (StreamWriter sw = p.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine("mysql -u root -p");
sw.WriteLine("mypassword");
sw.WriteLine("use mydb;");
}
}
Вы не могли только записать все команды в .cmd файл во временной папке и затем выполнить тот файл?
Процесс командной строки такой cmd.exe
или mysql.exe
будет обычно читать (и выполняться) независимо от того, что Вы (пользователь) вводите (на клавиатуре).
Для имитации этого я думаю, что Вы хотите использовать RedirectStandardInput
свойство: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx
Вы могли также сказать MySQL выполнять команды в данном файле, как так:
mysql --user=root --password=sa casemanager < CaseManager.sql