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

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

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

有任何想法吗?我知道,从长远来看,这可以有更好的整体设计/结构。请不要发布建议我重新设计所有内容的答案,因为这不是一个选择。

有帮助吗?

解决方案

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

因此两个页面应该就公共私钥达成一致。

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

其他提示

如果浏览器不传递引用者或使用您所描述的查询字符串,则无法知道。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top