У меня есть скрипт, который обрабатывает пользовательский ввод и, прежде чем продолжить взаимодействие с базой данных, проверяет ввод с помощью регулярных выражений.Мой единственный вопрос: достаточно ли регулярных выражений, чтобы отсеять инъекционные атаки или мне все еще нужно применить mysql_real_escape_string()?
mysql_real_escape_string()
Это действительно зависит от того, насколько «хорошо» выражение; как в "ты покрыл все свои базы?" Это не помешает пройти через mysql_real_escape_string, чтобы быть в безопасности. Если вы несколько раз используете это в своем скрипте, это не повлияет на производительность.
mysql_real_escape_string
Если ваше регулярное выражение достаточно хорошо, тогда да, однако, зачем рисковать?
Это если регулярное выражение ^$. Для всех других входов это зависит от того, позволяет ли регулярное выражение экранировать символы. Поскольку они зависят от базы данных и настроек соединения, вам действительно следует использовать подготовленные операторы или, если это не вариант, mysql_real_escape_string каждый раз.
^$
Если бы у вас не было удивительного выражения в RegEx, я лично не поверил бы, что оно завершено.
Всегда ошибка на стороне слишком большой защиты, а не слишком маленькой.Включить звонок на mysql_real_escape_string.