Должен ли я использовать проверку реферера HTTP или проверку токена для предотвращения атак CSRF?

Я читал о том, как защитить свой веб-сайт от атак CSRF в ASP.NET MVC. веб приложение. Они упомянули два способа сделать это::

  1. с использованием проверки токена с помощью <@Html.AntiForgeryToken()>и[ValidateAntiforgeryToken]

  2. с использованием проверки 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 или я могу выбрать один из этих методов?

10
задан Ilmari Karonen 14 February 2012 в 21:02
поделиться