如何验证给定的域归用户所有?


10

我正在写一个将主要由公司使用的软件。

然后,我想到了给公司一种注册其电子邮件域的方法的方法,这样,使用该给定域的电子邮件进行注册的每个用户都将自动进入公司组。

我知道Slack会执行类似的操作并且可以工作,但是存在一些问题……例如,我刚刚注册了“ live.it”(Microsoft的live.com意大利语版本)。

我不能仅仅假设,如果用户已经验证了具有特定域的电子邮件,那么将具有相同domain_mail的每个用户放在同一组中是安全的。

例如,如果我向me@gmail.com注册,则不想让用户注册“ gmail.com”有其自己的域。

我想避免使用“在域的根中放入html文件”或“设置TXT记录”之类的方法,因此我想知道应该怎么做。


11
为什么要求将文件放在域的根目录对您来说是一个问题?Google网站管理员工具正是这样做的。此外,您不需要永久性文件:用户将其放在服务器上,进行检查即可删除该文件。
2014年

9
如果您的设置错误,以至于外部用户无法访问您的主要网站,则应该对设置感到担忧,并指责您的系统管理员,而不是将您的站点添加到Google网站站长工具并指责Google。
2014年

1
而不是给他们一种可行的方法,并且他们以前已经使用过很多次了?
阿森尼·穆尔琴科2014年

6
@FezVrasta:请记住,您有两个目标:允许访问授权用户和拒绝访问未授权用户。使授权用户更容易,通常也使未授权用户也更容易。
MSalters 2014年

4
如果您使用DNS记录路由,则可能应该使用TXT记录,而不是MX。
亚伦·迪富

Answers:


20

根目录中的文件

不要放弃将文件放在公司网站的根目录中的可能性。它运作良好并得到广泛使用:Google网站管理员工具就是这种技术的一个例子。这使这种方法具有吸引力:由于大多数用户已经知道它,所以他们不会迷路。而且,与修改MX记录不同(大多数小公司甚至都不知道MX记录是什么),它不需要任何技术知识。

为了避免污染根目录,应仅在进行检查时要求放置文件。找到文件后,用户便可以将其删除。

请注意,没有任何公司网站的用户将无法访问您的服务,但在这种情况下,我认为不会有太多客户。

注意:

发送邮件

发送带有秘密链接的电子邮件非常麻烦。您不能对firstname.lastname@example.com进行操作,因为给定的人可能没有公司的电子邮件地址(通常是初创公司的情况,人们更喜欢使用其个人地址)。

在某些情况下,无法使用诸如admin@example.com之类的电子邮件。

  • 首先,总是有一些公司没有postmaster @ example.com,admin @ example.com等,但是您没有将其特定的“系统”电子邮件地址列入白名单。特别考虑外国公司;例如,在法国,通常使用“ Administrat eu r”而不是“ Administrator”,包括电子邮件地址和帐户名。

  • 其次,许多小公司无法访问,也不知道如何访问其系统电子邮件。他们甚至不知道自己有滥用@ example.com,并收到数百封紧急电子邮件,等待他们的回复。

    出于相同的原因,您不能基于电子邮件地址的WHOIS记录。


向用户发送验证电子邮件,例如“ info @”,“ administrator @”,“ postmaster @”,该怎么办?
Fez Vrasta 2014年

@FezVrasta-电子邮件地址非常容易被欺骗。
2014年

我的意思是“我发送电子邮件至info @并在其中包含确认链接”
Fez Vrasta 2014年

6
@FezVrasta-域可能没有与之关联的任何电子邮件服务器,并且如果有,则不能保证info@将在其上定义一个(或任何本地地址),或者该域将具有受监视的全部接收地址。
2014年

3
“注册他们的电子邮件域,以便每个在给定域的电子邮件中进行注册的用户都将被自动放入公司组。” 抱歉,但问题很明确,您可以使用电子邮件服务器。这种替代假设一个Web服务器,这是不是一个给定的。
MSalters 2014年

17

问题实际上是:“ 拥有电子邮件域意味着什么?”。

拥有网站的定义是将文件放在根目录中的能力。普通用户也许可以在文件上放文件,http://example.com/~user42/validation.txt但不能放http://example.com/validation.txt

对于电子邮件,没有这样的层次结构。但是,该postmaster地址是特殊的。(根据RFC2142保留),您将无法创建postmaster@gmail.com。因此,创建和/或访问的能力postmaster@是电子邮件域所有权所需的证明。


1
这是规范的一部分,是电子邮件服务器的常见内置组件,还是仅是约定?
DougM 2014年

8
@DougM:根据RFC 2142保留
MSalters 2014年

谢谢,所以还有其他选择,那就是使用postmaster @,谢谢
Fez Vrasta 2014年

5
@MSalters:您应该将RFC放入答案中
Bergi 2014年

1
对于许多postmaster @ domain来说,根本找不到合适的人或任何人。从技术上讲,它可能是确定域所有权的一种方式,但您实际上无法使用它。
JamesRyan 2014年

10

在您的评论中看到您可能不喜欢使用网站根目录文件方法,一种可行的替代方法是:

使用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查找,grep电子邮件,让用户选择其中一个,在电子邮件中发送验证码。
数字克里斯

我已经用我的两个最大客户对这种方式进行了测试,并且两个客户都没有在whois中提供有效的电子邮件(一个没有电子邮件,另一个拥有域注册人的技术支持电子邮件……
Fez Vrasta

1
顺便说一句,这可以作为替代添加。
Fez Vrasta 2014年

6

要求您的用户添加一个TXT记录到他们的域中,并参考他们在您网站上的用户帐户(他们的用户名,ID或要求用户验证其域时生成的任意令牌)。

我记得adn_verification=<my user name>在社交网络上添加了一条称为记录的记录,以显示经过验证的我的域,而且我认为这很整洁,不需要您将域指向Web服务器。


很大一部分用户不会知道什么是TXT记录,知道这些的用户不一定足够了解该设置。
2014年

1
@MainMa仍然是实现的好功能。

1
+1。仅仅因为您拥有域,并不意味着您就在上面运行了Web服务器(尽管在这种情况下,公司可能总会拥有一个网站:))。
马特

FWIW,如果您想要Office 365的自定义域,这是Microsoft使用的方法。–
Casey

2

要添加到页面上已经存在的建议中:我建议给用户有关他如何验证其域的选项。该页面上的其他建议都可以很好地使用,但是有时您会遇到只想验证其域的人只能访问其服务器甚至网站的情况。例如,您的用户可能无法在域根目录中添加域记录或文件。

例如,特洛伊·亨特(Troy Hunt)允许用户在其受感染帐户的数据库中搜索整个域,但是您需要首先进行验证。他为用户提供了4种方法的选择:

  1. 通过电子邮件;
  2. 通过元标记;
  3. 文件上传;
  4. TXT记录。

在所有这四种情况下,他都要求用户在其进行验证的地方输入特定值。

解释位于http://www.troyhunt.com/2014/01/im-pwned-youre-pwned-were-all-pwned.html


谢谢,但是电子邮件验证如何工作?它们如何阻止我验证“ gmail.com”或“ hotmail.com”域?(或更好的,一些未知的免费Webmail服务)。
菲斯·弗拉斯塔

无论您做什么,除非您明确地说“这些地址永远无法验证”,否则网络邮件提供商总是有机会注册其自己的域,而您实际上无能为力。您唯一可以做的就是阻止某些域完全被验证。您不需要阻止对mailprovider.com的验证,只需要阻止joe.shmuck@mailprovider.com设法验证其名字上的整个mailprovider.com域。
Nzall 2014年

好的,但是我无法知道电子邮件是公司的一部分还是免费的网络邮件服务的一部分。
Fez Vrasta 2014年

1
恐怕您必须为此保留一份白名单。另一种选择是,每个领域都必须得到人类的认可。我知道这给新申请人带来了更多麻烦,但是批准只需要进行一次。之后,您知道该域已获批准,而不是免费的Webmail服务。
Nzall 2014年

0

您能避免使用免费的网络邮件进行注册吗?

那什么的Brium没有:你不能用一个签到@gmail.com@live.com等电子邮件-你必须使用你自己的。

并以此集群您。

如果您以企业为目标,那应该是一个好方法。

您仍然可能会遇到一个问题,即知道老板是谁(例如,该组的管理员),但这可能并不那么重要-老板可能应该具有告诉任何员工将所有权转让给他的工具,前提是有人在老板面前注册。


3
您将如何检查域是免费的网络邮件?至少有数百个。
2014年

我在写同样的东西:)
Fez Vrasta 2014年

这是一个不太活跃的项目,其中列出了一堆:github.com/tarr11/Webmail-Domains。难道关键有任何人滑?覆盖大多数用户(Gmail,Live,Yahoo等)还不够吗?我不知道您的软件会做什么,但是-有人尝试避免此限制是否有用?如果他独自一人或没有同事,该软件会有用吗?
mgarciaisaia 2014年

这样可以基本访问上载到我的软件中的信息,因此在错误的组中有一些不需要的用户可能会引起问题。顺便说一句,这可能是一个解决方案,因为如果数据所有者注册一个不属于自己的域,将是数据所有者的问题...我认为
Fez Vrasta 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.