Большинство других ответов, похоже, полностью упустили смысл этого вопроса.
Тем не менее, основываясь на вашем примере выше (и, несмотря на то, что ваш код не соответствует рекомендациям mysql_real_escape_string()
), я не могу внедрить что-то действительно вредное, когда вы используете addslashes()
.
Однако, если вы ее опустите, пользователь может ввести в поле name
строку, которая выглядит примерно так:
some name'; DROP TABLE comments; --
Цель состоит в том, чтобы завершить текущий оператор, а затем выполнить свой собственный. --
является комментарием и используется для проверки того, что обычно не происходит после обработки введенной строки.
Однако (опять же), насколько я понимаю, MySQL по умолчанию автоматически закрывает соединение с БД в конце выполнения одного оператора. Таким образом, даже если бы я попытался отбросить таблицу, MySQL не смог бы выполнить этот второй оператор.
Но это не единственный тип внедрения SQL, я бы посоветовал прочесть еще немного по этой теме. Мое исследование нашло этот документ на dev.mysql.com, что довольно неплохо: http://dev.mysql.com/tech-resources/articles/guide-to-php-security-ch3.pdf
Правка, еще одна мысль:
В зависимости от того, что происходит с данными, когда они поступают в базу данных, я, возможно, не захочу вообще вводить SQL. Я могу захотеть добавить какой-нибудь HTML / JavaScript, который запускается, когда вы отправляете данные обратно на веб-страницу в атаке Cross-Site Scripting (XSS) . Что тоже нужно знать.