gpt4 book ai didi

asp.net-mvc-3 - 我应该使用HTTP引荐来源网址验证或 token 验证来防止CSRF攻击吗?

转载 作者:行者123 更新时间:2023-12-04 03:12:51 24 4
gpt4 key购买 nike

我了解了如何在ASP.NET MVC Web应用程序中保护我的网站免受CSRF攻击。他们提到了两种方法,分别是:

使用 token 验证通过使用<@Html.AntiForgeryToken()>[ValidateAntiforgeryToken]来使用

  • 使用HTTP引荐来源网址验证,例如:
    public class IsPostedFromThisSiteAttribute : AuthorizeAttribute
    {
    public override void OnAuthorize(AuthorizationContext filterContext)
    {
    if (filterContext.HttpContext != null)
    {
    if (filterContext.HttpContext.Request.UrlReferrer == null)
    throw new System.Web.HttpException("Invalid submission");
    if (filterContext.HttpContext.Request.UrlReferrer.Host !=
    "mysite.com")
    throw new System.Web.HttpException
    ("This form wasn't submitted from this site!");
    }
    }
    }


    [IsPostedFromThisSite]
    public ActionResult Register(…)

  • 因此,对于是否应该同时使用它们来保护我的网站免受CSRF攻击还是我是否可以选择其中一种方法,我感到困惑。

    最佳答案

    检查引荐来源网址存在问题。首先,HTTP规范专门允许客户端不发送引荐来源字符串(出于各种隐私原因)。因此,您的某些客户可能不包括它。其次,引荐来源网址字符串可能会被欺骗,在这种情况下,具有足够技能的攻击者可使他们看上去像成功进行CSRF攻击所需要的样子。

    使用CSRF验证 token 是一种更强大的方法,并且是缓解CSRF攻击的首选方法。您可以在OWASP CSRF Cheat Sheet上了解其原因。

    我还将指出,没有理由不能同时做到这两者。深度防御(DiD)策略通常是可取的,这样攻击者将需要击败多个独立的防御才能执行成功的攻击。您可以实现弱引用者检查方法(如果客户端提供了引用者,请在执行请求之前确保它是应提供的;如果不存在引用者,请像存在并正确地进行操作)以及CSRF验证 token 。这样,您可以检查引用的信息(如果客户端提供了该信息),同时仍然使用更强大的验证 token 方法。

    关于asp.net-mvc-3 - 我应该使用HTTP引荐来源网址验证或 token 验证来防止CSRF攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283628/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com