1

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

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

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

有任何想法吗?我知道,在总体方案中,这可能会有更好的整体设计/结构。请不要发布建议我重新设计所有内容的答案,因为这不是一个选择。

4

3 回答 3

5

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

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

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

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

于 2009-10-26T21:05:14.913 回答
0

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

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

于 2009-10-27T02:59:56.823 回答