2012-02-14 4 views
2

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

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

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

+1

«не самая лучшая практика» == «совершенно бесполезно против преднамеренной атаки» – Quentin

+0

Не уверен, что вы имеете в виду - защита от SQL-инъекции в PHP 4 такая же, как и в PHP 5. Вы имеете в виду заголовок E-Mail * * инъекция? –

+1

Возможный дубликат [Лучший способ остановить SQL Injection в PHP] (http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php) – Quentin

ответ

3

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

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

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

<?php 
$email = "[email protected]"; 

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

Хорошо, просто прочитайте, что вы проверили правильный формат. Итак, как вы ожидаете, что данные не будут EMAIL? – djot

+1

Конечно, это хорошая идея для проверки формата, но для чего-либо, исходящего от пользователя, я бы всегда рекомендовал либо подготовленные инструкции (которые, очевидно, недоступны в PHP 4, поэтому почему комментарий rdlowrey получил так много upvotes), или по крайней мере, избегать его с помощью 'mysql_real_escape_string()' ** дополнительно ** для любых проверок регулярных выражений, которые вы могли бы использовать. – Mike

-1

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