Request.UrlReferrer很容易被绕过并且不能可靠地用作防护?

问题描述 投票:1回答:1

我试图为某些操作提供保护,因此除非请求来自某个主机,否则无法访问它。这是示例代码。

public ActionResult test()
{
    if (Request.UrlReferrer == null || Request.UrlReferrer.Host != "mydomain.com") { return Content("Blocked!"); }
    else { return Content("Authorized!"); }
}

在我进入mydomain.com“在地址栏中键入链接,打开浏览器控制台并键入]之前,一切似乎都工作正常。>

window.location.href = "https://domainholdingthatacion.whatever/ActionRoute/test"; //trying to get unauthorized access

有效!它进入else分支。我需要您的输入,因为我不知道我是否在错误地使用它,因为Request.UrlReferrer

不是要用于此输入的,否则它本来就很脆弱。

我试图为某些操作提供保护,因此除非请求来自某个主机,否则无法访问它。这是示例代码。 public ActionResult test(){if(Request.UrlReferrer == ...

c# asp.net asp.net-mvc referrer http-referer
1个回答
3
投票

UrlReferrer不安全用于授权。任何浏览器或客户端都可以决定将引荐来源网址设置为所需的URL。另外,出于隐私原因,一些浏览器会阻止拒绝遵守此标头(尽管大多数情况下,仅在不同域之间是正确的)。

© www.soinside.com 2019 - 2024. All rights reserved.