Форумы портала PHP.SU » PHP » Регулярные выражения » Выражение и SQL-инъекция

Страниц (1): [1]
 

1. Slash Zn - 12 Августа, 2015 - 17:56:06 - перейти к сообщению
Здравствуйте.
Есть такое выражение:
PHP:
скопировать код в буфер обмена
  1. '/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/'

Им сценарий проверяет корректность электронной почты.
Скажите, пожалуйста, будет ли это выражение (по мимо проверки корректности) отсекать инъекции или же стоит еще использовать функцию mysqli_real_escape_string?
Спасибо.
2. Мелкий - 12 Августа, 2015 - 18:02:47 - перейти к сообщению
Используйте prepared statements для всех данных, отправляемых в БД.
3. Slash Zn - 13 Августа, 2015 - 03:36:52 - перейти к сообщению
Спасибо за совет.
Но что по моему вопросу - будет ли это выражение (по мимо проверки корректности) отсекать инъекции или же стоит еще использовать функцию mysqli_real_escape_string?
4. andrewkard - 13 Августа, 2015 - 10:08:59 - перейти к сообщению
Регулярное выражение проверяет на наличие конкретного набора символов, если оно верно, то в переменной будет только то, что разрешено Вами же. Так что в ней не будет ничего для sql инъекции.
5. Мелкий - 13 Августа, 2015 - 10:46:43 - перейти к сообщению
andrewkard пишет:
Так что в ней не будет ничего для sql инъекции.

Скорей всего - да. Но возможно для необъятного utf лазейка осталась. Представленная регулярка не обрабатывает utf корректно.

Slash Zn пишет:
использовать функцию mysqli_real_escape_string?

Не стоит. Ведь есть prepared statements.
Конкатенировать запрос и данные - плохая идея в любом случае.
6. Slash Zn - 13 Августа, 2015 - 14:34:21 - перейти к сообщению
Спасибо Вам! Нажать на спасибо не могу - не достаточно постов...


Мелкий, можете пример (код) показать с отправкой данных с использованием prepared statements?
7. Мелкий - 13 Августа, 2015 - 14:43:15 - перейти к сообщению
8. Slash Zn - 13 Августа, 2015 - 17:38:42 - перейти к сообщению
Большое спасибо.
Буду вникать, пробовать...

 

Powered by ExBB FM 1.0 RC1