使用PHP在远程站点上生成元标记和验证

时间:2015-11-13 15:56:14

标签: php

我正在开展一个项目,我需要验证用户网站的所有权。由于使用元标记验证所有权是最常用的方法之一,所以我想在我的项目中实现这一点。截至目前,我们的想法是使用PHP的uniq()函数生成唯一ID。我有两个问题要回答:

  1. 这是(uniq()函数)最好的方法吗?
  2. 放置在远程网站上时,阅读和验证此元标记的最佳方法是什么?
  3. 我希望通过提出一个更长的问题来避免违反SO规则。等待专家的帮助。

3 个答案:

答案 0 :(得分:2)

  1. 至于使用类似于md5(uniqid(rand(), true))

  2. 的函数生成随机字符串可能会更好
  3. 您可以使用PHP get_meta_tags('http://example.com')为特定网页生成元标记数组。然后遍历数组并确保设置了密钥并且值匹配。

  4. 有关PHP get_meta_tags的更多信息,请访问http://php.net/manual/en/function.get-meta-tags.php

答案 1 :(得分:1)

 <meta name="blah-blah-blah" content="can be any junk" />

告诉他们将其放在他们的网站上,并为您提供网址,获取该网址的内容并查找该元标记和内容,作业完成!

您不必非常喜欢它并使用uniq()best possible ways etc,这只是一个网址验证。

要回答您的问题2,PHP为您提供了一种阅读元标记的简单方法

$tags = get_meta_tags('http://www.example.com/');
if($tags["blah-blah-blah"]=="can be any junk")
   echo "site is verified";

答案 2 :(得分:1)

  1. 这是(uniq()函数)最好的方法吗?
  2. 这样做是绝对可以的。我看到的一个缺点是你必须存储分配给每个网站的唯一ID(例如,在数据库表中)。

    如果您使用哈希函数和一些秘密盐值,则可以避免此步骤。

    <?php
    define('SECRET','j83h93hbbf84zufhh348h4'); // some random string, keep secret
    
    function generateSiteId($domain) {
        return sha1($domain . SECRET);
    }
    
    function verifyDomainId($domain, $idToTest) {
        return (generateSiteId($domain) == $idToTest);
    }
    

    发送用户generateSiteId('www.example.com')并使用verifyDomainId('www.example.com','whatEverMetaTagValueFound')从元标记测试您的值。

    这样你甚至不必记住网站特定的唯一ID,这种方法是安全的,只要你保密秘密; - )