Почему mysql_real_escape_string не считает эти символы опасными? - PullRequest
3 голосов
/ 04 июня 2011

Я учусь дезинфицировать свои формы и знаю, что использование функции PHP mysql_real_escape_string() помогает избегать символов, которые считаются «опасными» или нарушает синтаксис вашего SQL.Я тестировал его и заметил, что он не экранирует последовательности символов, такие как -- или /* */.Разве это не комментарии в SQL и не могут ли они нарушить синтаксис оператора?Как бы вы передали эти и другие предметы, которые mysql_real_escape_string() не покрывают и не действительно дезинфицировали ваши формы?

Ответы [ 3 ]

5 голосов
/ 04 июня 2011

Они никогда не будут нарушать оператор SQL, поскольку они никогда не будут выходить из строки, и поэтому ваша строка остается неповрежденной, защищая вас от любых неприятных инъекций.

Это не означает, что вы не хотитеудалите их из строки однако.С точки зрения MySQL они безопасны, но в зависимости от вашего приложения это может быть не так.

3 голосов
/ 04 июня 2011

Всегда окружайте параметры кавычками, и вы будете в безопасности.Внутри кавычек -- и /* */ не имеют никакого особого значения.

0 голосов
/ 04 июня 2011

mysql_real_escape_string() будет корректно экранировать данные, чтобы отразить текущую установку MySQL и любые специальные символы, которые он может иметь или не иметь.Просто пропустите все ваши данные, прежде чем запрашивать, и вам не нужно беспокоиться.

Например, обратная косая черта (\) и одинарная кавычка (') используются для построения запроса (и дальнейшего экранирования), но косая черта - нет.Те структуры, которые вы упомянули, имеют контекст вне значения в кавычках, но поскольку они заключены в кавычки (и должным образом экранируются), они не окажут неблагоприятного влияния на запрос.

...