Как проверить, принадлежит ли данный домен пользователю?

10

Я пишу программное обеспечение, которое будет использоваться в основном компаниями.

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

Я знаю, что Slack делает что-то подобное, и это работает, но есть некоторые проблемы ... например, я только что зарегистрировал "live.it" (итальянская версия live.com от Microsoft).

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

Например, если я регистрируюсь на me@gmail.com, я не хочу, чтобы регистрация пользователя «gmail.com» имела собственный домен.

Я хотел бы избежать использования таких методов, как «поместить HTML-файл в корень домена» или «установить запись TXT», поэтому мне было интересно, как мне это сделать.

Фес Враста
источник
11
Почему просьба поместить файл в корень домена является проблемой для вас? Инструменты Google для веб-мастеров делают именно это. Более того, вам не нужно запрашивать постоянный файл: пользователь помещает его на сервер, вы делаете проверку, и файл может быть удален.
Арсений Мурзенко
9
Если ваши настройки настолько неверны, что внешние пользователи не могут получить доступ к вашему основному веб-сайту, вы должны быть обеспокоены настройкой и обвинять своих системных администраторов, а не добавлять свой сайт в Инструменты для веб-мастеров Google и обвинять Google.
Арсений Мурзенко
1
Вместо того, чтобы дать им способ, который работает и который они уже использовали много раз раньше?
Арсений Мурзенко
6
@FezVrasta: имейте в виду, что у вас две цели: предоставить доступ авторизованным пользователям и запретить доступ неавторизованным пользователям. Упрощение для авторизованных пользователей, как правило, делает это проще и для неавторизованных пользователей.
MSalters
4
Если вы идете по маршруту записи DNS, вам, вероятно, следует использовать записи TXT, а не MX.
Аарон Дюфур

Ответы:

20

Файл в корневом каталоге

Не исключайте возможность размещения файла в корневом каталоге корпоративного сайта. Он хорошо работает и широко используется: Google Webmaster Tools - один из примеров такой техники. Это делает этот подход привлекательным: так как большинство пользователей уже знают его, они не будут потеряны. Кроме того, он не требует никаких технических знаний, в отличие от изменения записей MX (большинство небольших компаний даже не знают, что такое запись MX).

Чтобы избежать загрязнения корневого каталога, вам следует попросить поместить файл только при выполнении ваших проверок. Как только вы нашли файл, пользователь может удалить его.

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

Обратите внимание, что:

  • Вы должны проверить оба http://example.com/file и http://www.example.com/file , потому что некоторые веб-сайты настроены так, что они не поддерживают форму http://example.com/ .

  • Вы также можете поддерживать HTTPS, учитывая, что я не думаю, что есть много компаний без перенаправления с HTTP на HTTPS.

  • Вы не должны принимать никакие другие домены третьего уровня, такие как http://mysite.example.com/ , потому что это позволит тому, кто купил домены третьего уровня, заявить, что он является владельцем домена второго уровня. example.com .

Отправка электронной почты

Отправка электронного письма с секретной ссылкой довольно проблематично. Вы не можете сделать это по адресу firstname.lastname@example.com, потому что конкретный человек может не иметь корпоративного адреса электронной почты (это часто бывает в случае стартапов, когда люди предпочитают использовать свой личный адрес).

Использование электронных писем, таких как admin@example.com, не будет работать в некоторых случаях.

  • Во-первых, всегда есть компании, не имеющие postmaster@example.com, admin@example.com и т. Д., Но имеющие свои «системные» адреса электронной почты, которые вы не включили в белый список. Рассмотрим конкретно иностранные компании; например, во Франции нередко используется «Administrat eu r» вместо «Administrator», в том числе для адресов электронной почты и имен учетных записей.

  • Во-вторых, многие небольшие компании не имеют доступа и не знают, как получить доступ к своей электронной почте. Они платят, даже не зная, что у них есть abuse@example.com сотнями срочных писем, ожидающих их ответа.

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

Арсений Мурзенко
источник
Как насчет отправки электронных писем с подтверждением пользователям, таким как "info @", "administrator @" "postmaster @"?
Фес Враста
@FezVrasta - адреса электронной почты невероятно легко подделать.
передано
Я имею в виду «Я отправляю электронное письмо на адрес info @ со ссылкой для подтверждения внутри»
Фес Враста
6
@FezVrasta - домен может не иметь каких-либо серверов электронной почты, связанных с ним, и если это так, нет гарантии, что info@(или любой локальный адрес) будет определен для него, или что у него будет отслеживаемый универсальный адрес.
передано
3
msgstr "зарегистрировать свой почтовый домен так, чтобы каждый пользователь, который регистрируется по электронной почте для данного домена, автоматически попадал в группу компаний." Извините, но вопрос проясняет, что вы можете взять на себя почтовый сервер. Эта альтернатива предполагает веб-сервер, который не является заданным.
MSalters
17

Вопрос в действительности: «Что значит владеть почтовым доменом?».

Владение сайтом определяется возможностью поместить файл в корень . Обычные пользователи могут добавлять файлы, http://example.com/~user42/validation.txtно не включать их http://example.com/validation.txt.

Для электронной почты такой иерархии нет. Тем не менее, postmasterадрес особенный. (Зарезервировано согласно RFC2142 ) Вы не сможете создавать postmaster@gmail.com. Таким образом, возможность создания и / или доступа postmaster@является доказательством того, что вам необходимо владение доменом электронной почты.

MSalters
источник
1
Является ли это специальностью частью спецификации, общим встроенным компонентом почтовых серверов или просто соглашением?
DougM
8
@DougM: Зарезервировано в соответствии с RFC 2142
MSalters
Спасибо, так что дополнительными опциями будет использование postmaster @, спасибо
Fez Vrasta
5
@MSalters: Вы должны указать этот RFC в своем ответе
Bergi
1
Для многих postmaster @ domain просто не подходит нужному человеку или кому-либо вообще. Хотя технически это может быть способом определения владельца домена, вы практически не можете его использовать.
Джеймс Райан
10

Видя в своих комментариях, что вы можете не предпочесть использовать метод file-in-root-of-website, альтернатива, которая может сработать, заключается в

Подтвердите право собственности с помощью WHOIS

Вам потребуется получить запрашиваемый домен (например stackexchange.com) и один из адресов электронной почты, указанных в выводе WHOIS для этого домена . (Обратите внимание, что это не будет работать для секретной / частной регистрации, но если ваша аудитория - корпорации, это обычно не проблема)

Например:

WHOIS information for stackexchange.com:**
...
Domain Name: STACKEXCHANGE.COM 
Registrar WHOIS Server: whois.name.com 
Registrar URL: http://www.name.com 
Updated Date: 2014-05-14T16:49:02-06:00 

Registrant Name: Sysadmin Team 
...
Registrant Email: sysadmin-team@stackoverflow.com 
Admin Name: Sysadmin Team 
Admin Organization: Stack Exchange, Inc. 
...
Admin Email: sysadmin-team@stackoverflow.com 
Tech Name: Sysadmin Team 
...
Tech Email: sysadmin-team@stackoverflow.com 
Name Server: cf-dns02.stackexchange.com 
Name Server: cf-dns01.stackexchange.com 
DNSSEC: NotApplicable 

Вы можете даже сделать whoisпоиск в интерактивном режиме и предоставить выпадающий список действительных писем (в данном случае, просто sysadmin-team@stackoverflow.com). Затем вы отправите проверочный код / ​​ссылку на выбранный адрес электронной почты.

Цифровой Крис
источник
Это то, что делается при проверке определенных SSL-сертификатов. Вероятно, это не автоматический подход. Но сделал бы хороший вторичный вариант.
GrandmasterB
@GrandmasterB Я не понимаю, почему это не может быть автоматизировано: поиск в Whois, поиск писем по электронной почте, выбор пользователя, отправка кода проверки по электронной почте.
Digital Chris
Я проверил этот способ с двумя из моих крупнейших клиентов, и у обоих нет действительного электронного адреса в whois (у одного нет электронных писем, у другого - электронная почта технической поддержки
владельца
1
Кстати, этот может быть добавлен в качестве альтернативы.
Фес Враста
6

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

Я помню, как добавил запись adn_verification=<my user name>в социальной сети, чтобы отобразить мой домен как проверенный, и я подумал, что это довольно аккуратно и не требует, чтобы домен указывал на веб-сервер.


источник
Большая часть пользователей не будет знать, что такое запись TXT, а те, кто знает, не обязательно будут достаточно осведомлены, чтобы установить ее.
Арсений Мурзенко
1
@MainMa это все еще хорошая функция для реализации.
1
+1. То, что у вас есть домен, не означает, что на нем работает веб-сервер (хотя в данном конкретном случае у компании, вероятно, всегда будет веб-сайт :)).
Мэтт
FWIW, это тот подход, который Microsoft использует, если вы хотите создать собственный домен для Office 365.
Кейси,
2

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

Например, Трой Хант позволяет пользователям осуществлять поиск по всему домену в своей базе данных скомпрометированных учетных записей, но вам нужно сначала проверить. Он дает пользователю на выбор 4 метода:

  1. По электронной почте;
  2. через метатег;
  3. Загрузка файла;
  4. запись TXT.

Во всех 4 из этих случаев он требует, чтобы пользователь где-то ввел определенное значение, которое он проверяет.

Объяснение на http://www.troyhunt.com/2014/01/im-pwned-youre-pwned-were-all-pwned.html .

Nzall
источник
спасибо, но как работает проверка электронной почты? Как они могут помешать мне проверить домен "gmail.com" или "hotmail.com"? (или лучше, какой-то неизвестный бесплатный сервис веб-почты).
Фес Враста
Независимо от того, что вы делаете, если вы явно не скажете «эти адреса НИКОГДА не могут быть проверены», всегда существует вероятность того, что провайдер веб-почты зарегистрирует свой собственный домен, и вы мало что можете с этим поделать. Единственное, что вы можете сделать, это предотвратить полную проверку некоторых доменов. Вам не нужно предотвращать проверку mailprovider.com, вам просто нужно запретить тому, чтобы joe.shmuck@mailprovider.com смог проверить весь домен mailprovider.com на свое имя.
Nzall
Хорошо, но я не знаю, является ли электронная почта частью компании или бесплатной службой веб-почты.
Фес Враста
1
Я боюсь, что для этого тебе понадобится белый список. Другой вариант заключается в том, что каждый домен должен быть одобрен человеком. Я знаю, что это делает это более проблематичным для новых заявителей, но утверждение должно произойти только один раз. После этого вы знаете, что этот домен одобрен, а не бесплатный сервис веб-почты.
Nzall
0

Можете ли вы позволить себе избегать использования бесплатных веб-писем для регистрации?

Вот что ческому делает: вы не можете зарегистрироваться в с @gmail.com, @live.comи т.д. по электронной почте - вы должны использовать свои собственные.

И это объединяет вас этим.

Если вы нацелены на бизнес, это должен быть хороший путь.

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

mgarciaisaia
источник
3
Как бы вы проверили, что домен является бесплатной веб-почтой? Их как минимум сотни.
svick
Я писал то же самое :)
Фес Враста
Вот не очень активный проект, который перечисляет их несколько: github.com/tarr11/Webmail-Domains . Является ли это , что критическая , имеющие любую из них скольжения? Разве этого недостаточно, чтобы охватить подавляющее большинство пользователей (Gmail, Live, Yahoo и т. П.)? Я не знаю, что делает ваше программное обеспечение, но - будет ли кому-то полезно попытаться обойти это ограничение? Будет ли программное обеспечение полезным, если он один в группе или без коллег?
марта
Это позволило бы получить базовый доступ к информации, загруженной в мое программное обеспечение, поэтому наличие нежелательного пользователя в неправильной группе может вызвать проблемы. Кстати, это может быть решением, потому что будет проблема владельца данных, если он зарегистрирует домен, не принадлежащий ... Я думаю
Fez Vrasta