В PHP, подходы к сокращению отправки ботов формы и недействительных учетных записей электронной почты? - PullRequest
1 голос
/ 16 июня 2009

Я знаю, что это довольно распространенный вопрос, но не могу найти лучший ответ (пока) ...

Каковы наилучшие подходы к сокращению формы отправки ботов и неверных учетных записей электронной почты в php и html?

Боты - каптха? скрытый css? что еще?

Invalid Email - это действительно безумная работа. Как я могу определить, если тип пользователя: user@yahooo.com, то я сказал, что электронная почта недействительна? Что, если он введет: user@yaho.com, user@yahoo1.com и т. Д. ... есть ли способ проверить действительность электронного письма?

Ответы [ 7 ]

1 голос
/ 16 июня 2009

Мы использовали блок подделки межсайтовых запросов в сочетании с капчей и полем, скрытым с помощью CSS, чтобы вырезать почти все поддельные электронные письма на нашем сайте. Это не идеально, но объем был значительно уменьшен. Если вы объедините все это с проверкой подлинности электронной почты человеком и удалением непроверенных учетных записей, вы можете еще больше укрепить спам-сеть.

  1. Установить сеансовый файл cookie для хешированного и засоленного секретного значения

  2. Отправьте форму с этим секретным файлом cookie и убедитесь, что сеанс соответствует скрытому полю формы. Это побеждает ленивых бот-представлений

  3. Добавить капчу, чтобы бить лучших ботов

  4. Создайте скрытое поле под названием «комментарии», которое скрыто с помощью CSS. Поместите ярлык с надписью «не заполняйте это, иначе ваша заявка будет проигнорирована», и стиль, который также скрыт. Любой, кто его заполняет, является либо ботом, либо дураком, и вы можете притворяться, что отправляете электронное письмо, но на самом деле не делаете этого.

Добавьте в Askimet (без личного опыта) и электронное письмо с быстрой проверкой, и у вас будет довольно надежная сеть, которая поможет вам избежать дерьма.

1 голос
/ 16 июня 2009

Я думаю, что CAPTCHA будет вашим вариантом, я использовал ReCAPTCHA в прошлом:

http://recaptcha.net/plugins/php/

Вы можете проверить электронную почту только по номиналу в соответствии с RFC.

http://en.wikipedia.org/wiki/E-mail_address

Возможно, вы захотите отправить им электронное письмо и попросить их щелкнуть ссылку для подтверждения своей учетной записи.

1 голос
/ 16 июня 2009

Лучше всего проверить действительные адреса электронной почты, отправив на него письмо со случайным значением, по которому пользователь нажимает кнопку.

, например

Welcome to McFadder's site!

Click here to validate your email address:

http://www.example.com/validate.php?Hash=c4ca4238a0b923820dcc509a6f75849b

Затем у вас есть таблица базы данных (скажем, с именем UserEmailValidate), которая содержит идентификатор пользователя, хэш.

Чтобы проверить адреса электронной почты в форме, используйте регулярные выражения JavaScript или проверку PHP.

Чтобы роботы не злоупотребляли вашей формой, используйте капчи. http://recaptcha.net/ - бесплатный сервис.

1 голос
/ 16 июня 2009

Одним из способов является использование службы, подобной Akismet, которая предоставляет бесплатный API для подключения вашей формы для проверки входных данных формы по отношению к известным спамерам (и спамоподобным текстам).

При наличии большого количества учетных записей электронной почты проверка учетных записей электронной почты является непростой задачей (вы всегда можете проверить правильность строки адреса электронной почты (например, xyz@abc.com) с помощью регулярных выражений, но не настолько быстро или просто, чтобы проверить, является ли учетная запись действует).

1 голос
/ 16 июня 2009

капчи являются наиболее распространенным способом предотвращения ботов. У кодирующего ужаса есть хорошая статья на эту тему (см .: http://www.codinghorror.com/blog/archives/001067.html и http://www.codinghorror.com/blog/archives/000712.html)

Что касается действительных / недействительных электронных писем, лучше всего подать заявку на подтверждение при регистрации. Не активируйте учетную запись, пока пользователь не использует ссылку / специальный ключ, отправленный по электронной почте.

0 голосов
/ 16 июня 2009

Прежде всего вы можете просто попытаться не справиться с этими проблемами, используя альтернативные методы (как это делает stackoverflow). Следующее, что нужно сделать, это проверить, может ли письмо «быть» действительным, разрешив имя хоста, и позволить пользователю играть в обычную игру-капчу. Вы можете сделать что-то свое или воспользоваться услугами третьих лиц. Вы можете широко использовать файлы cookie, flash и JavaScript, однако это может раздражать нескольких пользователей и не мешать такому количеству спамеров. Что вы подразумеваете под скрытым CSS? Скройте определенные поля ввода с помощью css и присвойте им имена, такие как URL / firstmail / name, и надейтесь, что робот - не подчиняется отображению: нет; - заполнит? Да, могли помешать немногие. Последнее, что нужно - отправить пользователю ссылку на данное письмо для проверки и активации его учетной записи, если учетная запись не активирована в течение двух дней, просто удалите ее. Вы могли бы даже сделать еще один шаг и попросить пользователя в этом письме отправить вам письмо на определенный адрес ...

0 голосов
/ 16 июня 2009

Отправьте электронное письмо с подтверждением на адрес, указанный вместе с ключом активации, который пользователь должен использовать для активации своей учетной записи, чтобы убедиться, что электронное письмо действительно.

Чтобы избавиться от ботов, вы, вероятно, захотите использовать капчу.

...