Как предотвратить SQL-инъекцию поля электронной почты $ _POST с помощью PHP 4 - PullRequest
2 голосов
/ 14 февраля 2012

Это было бы немного проще, если бы я мог использовать PHP 5, к сожалению, это не жизнеспособный вариант?

Я уже использую RFC 2822 из этого потока stackoverflow для проверкиФормат электронной почты действителен, при условии, что он использует JS на странице формы, что не является наилучшей практикой.

Я еще раз проверю, соответствует ли он этому формату перед сохранением, но мне было интересно, были ли какие-либо методычто следует использовать для предотвращения внедрения SQL-кода?

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Неправильный способ - «Никогда не доверяйте вводу пользователя»!

Сначала убедитесь, что данные в нужном формате, а затем запросите базу данных.Итак, во-первых, проверьте, имеет ли $ _POST [email_address] допустимый формат электронной почты, например, с помощью regex.Только если он находится в допустимом формате электронной почты, вы запрашиваете базу данных.

Код для регулярного выражения электронной почты (PHP):

<?php
$email = "test@test.com";

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
  echo "Email is valid.";
}
else {

  echo "Email in invalid.";
}
?>
0 голосов
/ 14 февраля 2012

используйте mysql_real_escape_string () на входе после того, как вы проверили его электронную почту, вы действительно должны использовать эту функцию на всех ваших входах, которые поступают в базу данных.

...