代码之家  ›  专栏  ›  技术社区  ›  Josh Stodola

如何判断用户来自何处?

  •  1
  • Josh Stodola  · 技术社区  · 15 年前

    是否有可靠的方法来确定用户在ASP.NET应用程序中的来源?我们有一个从两个不同位置链接到的Web应用程序。这两个链接位于不同的域上,它们需要指定此应用程序中的某些用户权限。这是我到目前为止所尝试的…

    • 使用 Request.UrlReferrer (这是 Referer HTTP报头)。这始终返回空字符串。我认为这是因为超链接使用javascript启动弹出窗口。根据我的研究,用户代理在标准超链接上提供了这个HTTP头。JavaScript弹出窗口是另一回事(显然)。

    • 用于指示引用的简单查询字符串。这不是一个真正的选择,因为我们需要一些不太容易绕过的东西(更安全)。

    有什么想法吗?我明白,在总体方案中,这可能有一个更好的总体设计/结构。请不要发表建议我重新设计一切的答案,因为这不是一个选择。

    3 回复  |  直到 15 年前
        1
  •  5
  •   Darin Dimitrov    15 年前

    没有可靠的方法来判断用户来自何处,这不仅是一个ASP.NET限制,而且是所有Web应用程序的一般限制。URL引用程序很容易被欺骗,因此不可靠。我认为最好的选择可能是一些加密的URL参数,或者cookie,如果你愿意的话。

    所以这两个页面应该在公共私钥上达成一致。

    1. page1将使用密钥加密其地址并将其传递给page2
    2. page2将检查此参数是否存在,并尝试使用用于加密的同一私钥对其进行解密。
    3. 如果成功,则意味着page2将能够确定谁调用了它,否则,数据将被篡改。
        2
  •  1
  •   John Sheehan    15 年前

    没有浏览器传递引用或使用您描述的查询字符串,就没有办法知道。

        3
  •  0
  •   Mike J    15 年前

    另一种选择是在ASP.NET应用程序上有两个不同的登录页。登录页面可以设置安全选项,然后重定向到公共主页。这比querystring选项更安全。

    或者,可以在从ASP.NET应用程序站点提取的引用站点上放置一个1x1像素的图像。引用者应该被传递到脚本,然后你可以在用户机器上设置一个cookie,当用户点击应用程序主页时,你可以引用它。