Нет, '
не комментарий в SQL, а разделитель.
мама предположила, что программист баз данных выполнил сходство с запроса:
INSERT INTO 'students' ('first_name', 'last_name') VALUES ('$firstName', '$lastName');
(например), для добавления нового студента, где $xxx
переменное содержание был взят непосредственно из HTML-формы, не проверяя формат, ни выйдя из специальных символов.
Поэтому, если $firstName
содержит Robert'); DROP TABLE students; --
, программа базы данных выполнит следующий запрос непосредственно на DB:
INSERT INTO 'students' ('first_name', 'last_name') VALUES ('Robert'); DROP TABLE students; --', 'XKCD');
т.е. это завершит рано оператор вставки, выполнит любой вредоносный код, который хочет взломщик, затем прокомментируйте любой остаток от кода могло бы быть.
Mmm, я являюсь слишком медленным, я уже вижу 8 ответов перед моим в оранжевой ленте...:-), популярная тема, это кажется.
Проверьте плагин живой проверки . Также есть вводный скринкаст .
https://github.com/augustl/live-validations/wiki содержит инструкции по установке.
Когда вы добавляете LiveValidations.use: jquery_validations
в внизу вашего environment.rb, убедитесь, что он находится за пределами блока Rails :: Initializer.
Проверка в реальном времени была для меня довольно беспорядочной, поэтому я начал с собственного решения с нуля при поддержке Validatious. На самом деле это действительно СУХОЙ из-за соглашений Rails в задней части, которые позволили сделать множество разумных предположений. В большинстве случаев все, что вам нужно, это включить несколько зависимостей javascript и объявить ваши проверки в своих моделях, как всегда - и все это просто работает! =) Загляните в README, чтобы узнать подробности.
Вот он:
Если вы ищете решение, которое не вводит никаких зависимостей от плагинов, посмотрите мой скринкаст по этому вопросу: