【问题标题】:Access website Y only after you are redirected from website X只有在您从网站 X 重定向后才能访问网站 Y
【发布时间】:2021-10-11 10:55:40
【问题描述】:

我有一个有点奇怪的问题,我不确定这是否可以实现,但无论如何我很想尝试。

我有 2 个独立的站点,比如说 www.site1.comwww.site2.com。 site2 将放置在 site1 中的 href 中。问题是 - 只有在用户从 site1 重定向到它之后,如果用户尝试直接打开 site2 或通过来自另一个站点的 a href,那么 site1 就无法访问它,是否有可能访问它?

【问题讨论】:

  • 你可以在site1上设置一个cookie,在site2上查看。它应该是一些您可以验证的加密签名令牌,因此它不会被欺骗,并且它应该有一定的生命周期,或者一次性使用。还有referer header,但很容易伪造。
  • @RaniSharim cookie 是特定于域的。
  • 这是使用引荐来源网址在服务器端完成的。以 PHP 为例:stackoverflow.com/questions/5032889/checking-php-referrer
  • @RaniSharim 是的,如果您向 site2 发出 AJAX 请求以以这种方式创建 cookie,那么这当然可以。但是告诉初学者“在站点 1 上设置 cookie”而不提及它实际上是对站点 2 的启用凭据的 ajax 请求,充其量可能会产生误导

标签: javascript angular


【解决方案1】:

检查:

window.document.referrer
// Empty if User is directly loading page.

如果用户直接导航到页面(不是通过链接,而是,例如,通过使用书签),则该值为空字符串。因为这个属性只返回一个字符串,所以它不会让您访问引用页面的文档对象模型 (DOM)。

MDN 文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer

浏览器支持:

【讨论】:

    【解决方案2】:

    您可以检查您从网站 1 重定向设置的 post 参数(通过表单或纯 JavaScript)。然后设置一个本地存储变量以在加载站点 2 时进行检查。

    Local storage doc

    JavaScript post request like a form submit

    但请记住,只要具备足够的 html/js 知识,就可以轻松绕过

    为确保只有您的网站可以创建发布参数,您可以(不确定我在那里):从网络服务器 1 随时随地生成代码(用作发布参数)并将它们发送到webserver 2 同时(或稍早),以确保 server 2 接收到的代码确实是在 server 1 生成的

    【讨论】:

      【解决方案3】:

      根据您使用的后端服务器,您可以使用名为REFERRER 的详细信息,该详细信息将出现在请求的http header 中(例如,用于您的www.site2.com 页面)。这个REFERRER 将包含有关谁将用户推荐到此站点的信息。您可以添加类似if REFERRER is www.site1.com then render the page 的条件。

      这是一个开始的链接 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-05
        • 2019-08-21
        相关资源
        最近更新 更多