【问题标题】:How to give somebody a link to something that nobody else can have? [closed]如何为某人提供其他人无法拥有的东西的链接? [关闭]
【发布时间】:2012-03-26 04:06:17
【问题描述】:

通常,当您向某人发送指向某人社交资料的链接时,它会要求您创建一个帐户以查看它。但是说我不想那样做,而是我想给他们一个无法被搜索引擎索引的链接以及一些相当复杂的猜测,以便人们可以看到该链接上的内容,我在想类似:

  www.domain.com/user/content/private/secured/90989834093/testcontent.php

我如何安全地实现这一目标?

【问题讨论】:

    标签: php security hyperlink private


    【解决方案1】:

    您可以生成一次性随机访问令牌并在查询字符串中使用它,而不是这样做。令牌将存储在数据库中,该数据库将知道它之前是否被访问过。当页面被点击时,会根据数据库检查令牌,如果仍然处于活动状态,则会提供内容。

    正如 Truth 在下面评论的那样,这可以很好地与 Session 或 Cookie 结合使用,因此您可以在使用访问令牌后继续为经过身份验证的用户提供页面。

    【讨论】:

    • 可能也可以与 Sessions 和 Cookies 结合使用,以允许第一个访问的用户访问该页面(并且只有他)。
    • 这是个好主意,我会把它添加到我的答案中。
    • 谢谢!我还考虑让推荐人提供该人必须输入的密码选项,而不是拥有一个帐户。
    【解决方案2】:

    您可以使用散列函数创建一串“随机”字符来创建此类 URL。

    例如,如果标准配置文件的页面是:

    domain.com/user/$id/show.php
    

    当$id 是一个var,它的值是用户的ID。 你可以这样做:

    $hash = md5($id);
    domain.com/user/$hash/show.php
    

    问题是任何人都可以重复该过程并最终达到哈希值。 因此,您应该设置一个随机字符串,将其添加到数据库(将其与该用户关联)并对其进行哈希处理。

    为了防止搜索引擎索引它,你可以使用简单的技术,寻找robots.txt文件。

    【讨论】:

      【解决方案3】:

      这是 Youtube 和其他网站上“不公开”视频背后的原理 - 一个模糊的随机生成的字符串,被 NOINDEX 和 NOFOLLOW 阻止搜索。但请注意,从这个词的真正含义来看,它并不安全。没有身份验证,任何可以访问该 URL 的人都可以通过。

      如果您知道目标用户,您可以通过 IP 或 IP 范围限制访问。只是另一个想法。

      【讨论】:

      • 或者我正在考虑让他们选择输入推荐人将提供的密码。
      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多