使用php验证域名

时间:2010-09-27 14:41:08

标签: php

我有一个会员区,他们可以在这里添加他们的域名,它将显示在个人资料页面中..但现在我想添加一个验证流程,就像谷歌网站管理员那样...他们需要上传的地方某个文件等等.. 请告诉我最好的方法吗?

谢谢:)

5 个答案:

答案 0 :(得分:8)

  1. 为每个域(域名为sha-1)生成一个令牌,将其存储在您的数据库中或者您拥有的域中。
  2. 根据用户请求生成包含令牌的文本文件。
  3. 要求用户立即通知您轮询或轮询以检查URL。如果启用了fopen_wrappers,这可以通过PHP中的file_get_contents轻松完成。
  4. 显然,令牌与数据库中的令牌进行比较,以确保它不仅仅是随机域中的随机文件..
  5. 最好在某个时间间隔检查文件是否仍然存在,以防止某人销售该域名但仍处于控制之中
  6. 这不是真正的黑色艺术,因为我们可以假设一旦用户可以满足任何证明访问的特定请求,用户就可以访问其域。没有真正的方法可以欺骗系统,除了做一些DNS魔术,或者进入域上运行的网络服务器,这无论如何都无法控制。

答案 1 :(得分:3)

不确定这是否是最佳方式,但我认为Google会做这样的事情:

  1. 获取用户的域名(例如“http://example.com”)
  2. 生成唯一代码并存储在db
  3. 告诉用户上传代码的位置(例如“/verification.txt”)
  4. 确认后,从自己的服务器向用户的服务器发出代码(“http://example.com/verification.txt”)的HTTP请求
  5. 将您收到的代码与db
  6. 中的代码进行比较

    您可能希望为同一个域生成相同的代码。

答案 2 :(得分:1)

这个问题很复杂。我想你需要详细说明你想要的东西。

编辑#1:

生成一个md5并将其提供给用户,告诉他们将其放在他们的域上并提供一个URL到它的位置。这可以是txt文件或任何内容。

然后读取该文件并检查md5字符串是否存在。

实际上我会想出一些与md5略有不同的东西。也许其中有三个,这样你就可以减少在其他领域找到它的机会,然后给你那个URL。

除非您确定约束条件,否则这仍然是欺骗性的,因为它必须是文本文件,文件必须只包含md5 ......等。

现在我可以输入md5,但这并不意味着我控制了这个网站:

md5(“我欺骗了你”)=“0afb2d659b709f8ad499f4b87d9162f0”

但是,如果我将URL传递给此答案,您的系统可能会意外地认为我有管理员。

我建议创建一个文件并让它们上传文件并为其提供URL。但即使这样也不一定有效,因为有许多网站你可以上传一些内容。

也许如果它是一个可以执行的PHP编码文件?这是一种安全漏洞,因为我不知道我是否会上传任何人的PHP文件。通常情况下,如果您没有管理员,则无法让您上传可以正常运行的php文件。

您可能想要创建一个php call-home脚本,但那会很糟糕。人们不会使用它。

答案 3 :(得分:1)

可以采取的另一种方式是:

  1. 获取域名
  2. 生成随机代码/字符串。
  3. 在您的数据库中疼痛
  4. 在内容中制作元标记和随机代码。
  5. 使用网站索引页面的文件获取内容。
  6. 然后在页面中搜索元标记,其中包含在数据库中排序的代码。
  7. 如果声明成功或不成功。
  8. 元标记应如下所示:

    <meta name="site-verification" content="1010101010101010101010101010101010101010" />
    

答案 4 :(得分:0)

实际上,只需为域名创建一个md5字符串,让网站所有者将其放入元标记中,这样您就可以检查它是否已经正常工作......