Выполните несколько командных строк с тем же процессом с помощью.NET

Существует множество способов предотвращения 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-инъекция не предотвращается.

55
задан John Saunders 21 February 2010 в 16:36
поделиться

4 ответа

Можно перенаправить стандартный вход и использовать 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;");
            }
        }
76
ответ дан DotNetUser 26 November 2019 в 17:44
поделиться

Вы не могли только записать все команды в .cmd файл во временной папке и затем выполнить тот файл?

11
ответ дан M4N 26 November 2019 в 17:44
поделиться

Процесс командной строки такой cmd.exe или mysql.exe будет обычно читать (и выполняться) независимо от того, что Вы (пользователь) вводите (на клавиатуре).

Для имитации этого я думаю, что Вы хотите использовать RedirectStandardInput свойство: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx

3
ответ дан ChrisW 26 November 2019 в 17:44
поделиться

Вы могли также сказать MySQL выполнять команды в данном файле, как так:

mysql --user=root --password=sa casemanager < CaseManager.sql
1
ответ дан Ben Hoffstein 26 November 2019 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: