繁体   English   中英

如何分辨用户来自哪里?

[英]How to tell where the user is coming from?

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

  • 使用Request.UrlReferrer (这是Referer HTTP标头)。 这总是返回一个空字符串。 我相信这是因为超链接使用Javascript启动了一个弹出窗口。 根据我的研究,用户代理在标准超链接上提供此HTTP标头。 显然,JavaScript弹出窗口是一个不同的故事。

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

有任何想法吗? 我了解,按照宏伟的计划,这可能会有更好的总体设计/结构。 请不要发布建议我重新设计所有内容的答案,因为这不是一种选择。

没有可靠的方法可以判断用户来自何处,这不仅是ASP.NET的局限性,而且通常是所有Web应用程序的局限性。 网址引荐来源网址很容易被欺骗,因此不可靠。 我认为最好的选择可能是一些加密的url参数,或者是cookie(如果您愿意)。

因此,两个页面都应该在通用私钥上达成共识。

  1. Page1将使用该密钥加密其地址并将其传递给Page2
  2. Page2将检查此参数的存在,并尝试使用与加密相同的私钥对其进行解密
  3. 如果成功,则意味着Page2将能够确定谁调用了它,如果不成功,则表明数据已被篡改

如果没有浏览器传递引荐来源网址或使用您所描述的查询字符串,就无法知道。

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

或者,您可以在从ASP.NET应用程序站点提取的引荐站点上放置1x1像素的图像。 应将引荐来源网址传递给脚本,然后您可以在用户计算机上设置cookie,然后当他们访问应用程序主页时可以进行引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM