Является ли подтверждение по электронной почте со ссылкой плохой идеей?
В процессе моей регистрации пользователь регистрируется, ему по электронной почте отправляется ссылка для подтверждения, и если он щелкает по ней, только тогда его учетная запись будет проверена. Но не является ли этот метод проверки слишком простым для ботов?
Я думаю, что электронная почта может быть создана ботом, но наверняка, если проверка просто щелкает ссылку, она также может быть автоматизирована ботом. Я не уверен, так как я не сделал этого и не хочу проверять это, просто чтобы знать, но мой вопрос, не является ли этот метод проверки некорректным?
Я думаю о том, чтобы отправить код подтверждения пользователю в виде текста, который он должен будет скопировать / вставить вручную в форму И форма защищена с помощью капчи. Это лучшая идея? какие-нибудь недостатки с этим?
7 ответов
Большинство предложений касаются проверки электронной почты и использования CAPTCHA, что, конечно, следует делать, но имейте в виду, что ни один из этих методов не является полностью пуленепробиваемым.
Подтверждение адреса электронной почты
Бот может легко "нажимать" на ссылки в любом письме. Копирование и вставка чего-либо было бы немного более раздражающим для автора бота, но не очень. Обычно проверка электронной почты - это проверка электронной почты.
Вы проверяете, будет ли электронная почта, вероятно, контролироваться тем, кто пытается ее зарегистрировать, но, разумеется, поскольку электронная почта обычно отправляется в виде открытого текста по ненадежному TCP и использует небезопасный DNS, то до тех пор, пока мы все не используем DNSSEC и не зашифруем весь трафик, она будет легко перехватывать электронную почту и подделывать серверы и клиентов. Важно понимать, что с помощью проверки электронной почты вы получаете только определенную степень уверенности в том, что тот, с кем бы вы ни говорили, действительно является пользователем этого адреса электронной почты.
Тест Тьюринга
Ответ на вопрос, ответ на который должен знать только человек, будет еще более раздражающим, но, учитывая, что у вас, вероятно, не будет бесконечного количества вопросов, автор бота может перенаправить неизвестный вопрос реальному человеку и использовать кэшированные ответы, если любой вопрос повторяется больше чем единожды. Отвечая на вопрос типа "что такое 12+8", как я видел на некоторых сайтах в последнее время, поскольку тест Тьюринга совершенно контрпродуктивен, поскольку этот вопрос на самом деле легче для ботов, чем для людей. Вероятно, наиболее популярным тестом Тьюринга для этого являются капчи, но здесь вы также должны понимать, что их можно обмануть.
Прежде всего, люди демонстрируют способы обхода CAPTCHA, например, см. Сообщение о декодировании re CAPTCHA из DEFCON 18. Многие CAPTCHA гораздо проще расшифровать роботам, поскольку они генерируются алгоритмами, тривиальными для реверса. Искажения re CAPTCHA также довольно просты, но слова, которые они используют, являются реальными отсканированными словами, которые были трудны для распознавания текста, поэтому в принципе это должно быть намного сложнее для ботов, но это не всегда так.
И есть также возможность отображать капчи, которые вы хотите угадать на других сайтах, и попросить людей ответить за них. Кроме того, существует черный рынок людей, которые на самом деле решают капчи, поэтому, если ваш автор бота не возражает заплатить что-то вроде двух центов за дюжину, то, независимо от того, насколько это трудно для людей, реальные люди все равно решат это.
Нижняя линия
Суть в том, что использование любого из методов остановки ботов всегда будет компромиссом того, сколько владелец бота (спамер или кто-либо еще, кто хочет зарегистрировать много пользователей в вашей системе) будет готов потратить время, усилия и денег, чтобы сделать это, и сколько неудобств для ваших пользователей вы собираетесь терпеть, потому что в конечном итоге вы никогда не сможете сделать какой-либо автоматизированный тест, чтобы отличить людей и ботов, фактически не раздражая людей и не отталкивая людей с ограниченными возможностями (кто-нибудь когда-либо пытался угадать аудиоверсию reCAPTCHA?), и все же ваши боты могут на самом деле работать на людях, так что на самом деле это не боты, а киборги, так сказать.
Это гонка вооружений, за которую ваши честные пользователи платят цену. Пожалуйста, имейте это в виду.
Вопрос в том, что вы пытаетесь проверить? Когда вы отправляете ссылку на адрес электронной почты, вы можете знать, что тот, кто зарегистрировал эту учетную запись, имеет доступ к адресу электронной почты. Это не говорит вам ничего о них, кроме этого.
Так что да, боты могут создать учетную запись и использовать ее для регистрации. Если вы хотите остановить ботов, то да, капчу нужно добавить. Обратите внимание, что нет смысла добавлять код для копирования / вставки - это легко сделать как для бота, так и не даст вам ничего, кроме капчи.
Как всегда, безопасность и удобство обычно конкурируют друг с другом.
Ссылка в электронном письме просто подтверждает, что это активный адрес электронной почты. Да, для ботов это легко. Но так ли ценен ваш сервис, что его будут атаковать боты?
CAPTCHA - это всегда способ убедиться, что ваши пользователи - люди. Дополнительное кодирование и связанные с этим разочарования являются компромиссом.
В конце концов, сделайте все как можно проще, но не проще.
Вы проверяете только электронную почту или делаете полную регистрацию?
Я всегда проверяю адрес электронной почты в первую очередь. Затем, после проверки, завершите процесс регистрации.
поэтому добавьте капчу на шаге подтверждения электронной почты.
Другими словами, попросите пользователя ввести свой адрес электронной почты, ввести капчу и отправить форму.
Таким образом, только реальные люди получат письмо с подтверждением.
Конечно, это не мешает ботов-людей.
ОКРУГ КОЛУМБИЯ
Это также означает, что вам не нужно хранить неудачные / неверные регистрационные данные.
Одной из проблем является то, что пользователь проверяет один адрес электронной почты, а затем изменяет его в процессе регистрации, я справляюсь с этим следующим образом.
Когда пользователь отправляет свой адрес электронной почты, данные не сохраняются вообще. Вместо этого я использую $validation_code = md5(trim($email)+$secret)
сгенерировать проверочный код. Таким образом, они не могут изменить адрес электронной почты в фактической регистрационной форме. Адрес электронной почты и код подтверждения передаются как скрытое поле до конца для подтверждения адреса электронной почты. Если адрес электронной почты будет изменен с подтвержденного, регистрация не будет выполнена, так как md5 больше не совпадает.
ОКРУГ КОЛУМБИЯ
Да, боты могут вводить электронные письма и проверять ответы. Я также слышал о попытках ботов стать лучше в распознавании изображений и ответах на капчи, хотя я не могу точно сказать, насколько они хороши. Если вы действительно обеспокоены, я бы пошел с:
- Подтверждение адреса электронной почты
- Защитный код
- Простые случайные вопросы (Сколько ушей / пальцев у большинства людей?)
- Номер мобильного телефона, который отправляет код через SMS
Последний может оказаться лучшим в устранении ботов, но он также ограничит количество подписчиков на ваш сайт. Кроме того, чем больше у вас проверок, тем больше вы будете раздражать пользователей и тем больше будете увеличивать барьеры на пути их регистрации, что также может быть довольно большим недостатком. Лично я считаю, что капчи - это хороший баланс защиты ботов и неудобств для пользователей.
Как уже указывалось, у вас просто есть некоторая проверка CAPTCHA.
Тем не менее, я предлагаю выполнить проверку человеком, прежде чем ваше приложение создаст учетную запись пользователя и отправит подтверждение по электронной почте. Невозможно заставить добавленную стоимость вашего сайта просто отправлять спам-письма с подтверждением и создавать поддельные сообщения, ожидающие подтверждения аккаунта.
Ничего плохого в ссылке, если вы делаете это.
Я столкнулся с похожими проблемами с проверкой электронной почты и тестированием. Если вы хотите пройти сквозную проверку электронной почты, попробуйте EmailE2E.com - это бесплатно.
Вы можете отправлять и получать электронные письма из случайно сгенерированных почтовых ящиков через API.
Он идеально подходит для тестирования Firebase, Amazon Cognito или других поставщиков OAuth, которые используют коды проверки электронной почты при регистрации. Плюс у него есть клиенты на Java и JS.