Я использовал получить столько спама в моем почтовом ящике повседневной о том, что я больше тратит время исключить его то я был добавляя новое содержание, обслуживание сайта, или начало новых объектов комбинированных (типичная история справа). Некоторые из вашего веб-сайта спам не предотвратить, либо, это можно предотвратить, но ценой удобство использования и / или получение хорошей информации, оказавшихся в "плохие вещи", как хорошо.
Нет сомнений, если вы серьезно относимся к веб-разработки вы собираетесь быть создание и взаимодействующих с формы на регулярной основе. Особенно с этим новым Web 2.0 каждый имеет отношения ... Gee Wiz, что это?
CAPTCHA
CAPTCHA, является номер один метод большинство людей используют в целях предотвращения спама сегодня. Что это такое?
"CAPTCHA является проблемой реакциею использоваться на компьютерах, чтобы проверить, если пользователь человека. Общий вид CAPTCHA, которая используется на веб-сайтах требует, чтобы посетитель типа буквы и цифры от искаженного. Этот метод основан на том факте, что трудно для компьютеров, чтобы извлечь текст из изображения, хотя это очень легко для человека ". - Captchacreator.com
Вот несколько ресурсов для скриптов так что вы сможете выполнить эту функцию в свои собственные формы:
Побег данных - предотвратить SQL инъекций
Capcha является usless если вы чего вашей форме незащищенными от нападения. Не забудьте после фильтра строк с addslashes () или mysql_real_escape_string ().
Также посмотрите на эти функции для других подобных проверок, которые могут быть полезны:
- htmlspecialchars () - удается избегать следующие символы: &,',",>,< ... то есть амперсанд, одинарная кавычка, двойная кавычка, меньше, а больше, чем символы.
- strip_tags () - полосы из всех HTML и PHP код из данной строки.
- htmlentities () - Преобразует все символы на их HTML организаций эквивалента (это больше поймать все версии htmlspecialchars).
- urlencode () - Кодирует URL для передачи строки по методу GET. Как я уже упоминал, не используйте GET с формами. Это полезно, когда вы прохождения пользователем входных переменных и по другим причинам.
Помните, что после преобразования данных, как это, используя одну из перечисленных выше функций, вы можете отменить ее для удобства чтения и вывода с помощью обратной функции. Urlencode () для примера urldecode (), чтобы отменить свои действия, чтобы можно было начать использовать строку в качестве Вы бы, прежде чем кодировать.
Проверьте метод запроса
Бросай, если заявление вокруг существующей форме процессор, который проверяет, есть ли данные из глобальных после переменной. Если нет, то пользователь не является доступ к вашей форме, как Вы предназначена она будет использоваться.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Скачать этот код: 0305spamrequestmethod.txt
Изменить это GET, если вы используете его. Тем не менее, я бы высоким рекомендуем вам не использовать этот метод, поскольку он является более небезопасными.
Проверить запрос источник
Вы должны также проверить, находится ли запрос из вашего собственного сервера. Это очень распространенный метод формы злоупотреблений, которые не обязательно означает, что вы будете получать спам. Если сервер получает много письма к его электронной почты по умолчанию вам, возможно, кто-то злоупотребляет вашем сайте в этом порядке.
-
<?php -
$source = $_SERVER [ ‘HTTP_HOST’ ] ; -
//or if you want to detect just the domain you can use a regular expression to filter it. -
$source = ereg_replace ( "^(www.)?([^.] ).[^.] $" , " \\ 2" , $_SERVER [ ‘HTTP_HOST’ ] ) ; -
if ( $source !== "robmalon.com" ) { -
echo "you are illegally accessing this script" ; -
} else { -
//typical form processes -
} -
//The referrer should also be from your own domain…Likewise, if there is no referral then the user obviously isnt using your form correctly (so we dont have to check for that). -
//Note: stristr() searches for the first occurrence of a string inside another string. -
if ( stristr ( getenv ( "HTTP_REFERER" ) , $source ) ) { -
//typical form processes -
} else { -
echo "you are illegally accessing this script" ; -
} -
?> - Скачать этот код: 0305spamhostsource.txt
Использование регулярных выражений для проверки данных
Я хотел проверить данные, используя preg_match (или какие-либо функции регулярных выражений). Этот метод убивает много птиц одним камнем. Зачем писать отдельные функции, чтобы проверить, если строка пуста, а затем еще одно, если это позволяет номер, и еще, если это позволяет альфа-символов, а другой для конкретной области длину, и еще ... Вы получите точку.
если (! preg_match ("/^[-Z0-9] (5,15 }$/", $ имя)) $ ошибку .= "<li class=\"errors\"> В поле" Имя может содержать только буквы и цифры (без пробелов), и можно только до 15 символов. </ Li> ";
В preg_match Я убедитесь, что имя поле содержит только буквенно-цифровые значения (нечувствительное) и должен быть по меньшей мере от 5 до 15 символов в длину. Если вам не отвечают, что спецификация соответствующий текст добавляется в $ ошибку.
Используя "[переменная] [точка] [равными] [текст]" в этом моде позволяет мне сохранять текущие переменные, что я еще. Я могу проверить, чтобы убедиться, $ ошибке содержит никаких данных до моего скрипт делает каких-либо существенных запросов. Если Существуют ошибки вертеле вы можете их на поверхность $ ошибку и попросить пользователя исправить их. Затем я использовать CSS для стиля моей ошибки, которые вы можете видеть в классе = \ "ошибки \".
Регулярные выражения вызывающе имеют кривой обучения на них, но они являются одним из лучших инструментов, которые помогут упростить вашу жизнь в самых разных ситуациях. Я пойду в более подробно о них вниз по дороге, но сейчас вы можете купить книгу или какую-то поиск в Google.
Нетехнических команды
Осуществлять CAPTCHA сценарий.
-Escape черту (и другие плохие символы).
-Убедитесь в том случае, если данные подходит к вашей форме с помощью правильного метода.
-Убедитесь в том случае, если запрос из вашего собственного сервера.
-Проверка данных с помощью регулярных выражений.
Это лишь верхушка айсберга для того, что я могу сказать вам о спаме. THATS, почему я решил сделать мини-серии от него. В течение следующих пары недель я буду чего вам более подробную пути я заниматься спамом. Комментарии ниже, или по электронной почте мне о вашей собственной спам-профилактических методов. Если речь идет о новых или уникального метода я разместить его в блог будущего вместе с ссылкой на ваш блог. Просто напишите в комментариях ниже, и включать ваш URL на веб-сайте области.





































Он только что произошло ко мне ... создании, если эти заявления с умереть () заявление может быть проще для быстрого и грязные методы. Какой я уверен, что большинство из вас, по крайней мере сейчас хотели quickfix только пару дюйма Имейте это в виду ... то вроде этого:
если ($ _SERVER [ "REQUEST_METHOD"]! == 'POST') (Die ( "Форма не может быть использован как");)
Вы можете поставить в любом месте, что в начале скрипта для того, чтобы вступить в силу, не беспокоясь о существующих кода слишком много.