Защита от подделки и кеширования заголовка ASP.NET core - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь переопределить cache-control заголовок, установленный по умолчанию для защиты от подделки ядра asp.net 2.0

.net core всегда устанавливает его на no-cache, no-store. Я пытаюсь использовать private, который на самом деле работает, как я хотел. no-cache, no-store, кажется, не всегда срабатывает, из-за чего я иногда получаю какую-то ошибку antiforgery token was meant for ... user... Какая настройка от cache-control до private, кажется, решает.

Но ядро ​​.net не позволяет мне переопределить значение по умолчанию cache-control, установленное антиподделкой.

Я пробовал следующее:

  public async Task<IActionResult> Login(string returnUrl)
  {
          HttpContext.Response.Headers.Append(Microsoft.Net.Http.Headers.HeaderNames.CacheControl, "private");
       ....
  }

Также

 public class NoCacheAttribute : ActionFilterAttribute
 {
       public override void OnResultExecuting(ResultExecutingContext context)
       {
        // tried both
        //context.HttpContext.Response.Headers.Add(HeaderNames.CacheControl, "private");
        //context.HttpContext.Response.Headers[HeaderNames.CacheControl] = "private";
       }
 }

Примечание: использование только для http прямо сейчас

1 Ответ

0 голосов
/ 05 сентября 2018

Использование защиты от подделки требует заголовок Cache-Control: no-cache, no-store. Страница с токеном абсолютно не может быть кэширована ни при каких обстоятельствах, потому что токен регенерируется для каждого запроса этого ресурса, и для подтверждения необходимо отослать нужный. Другими словами, это абсолютно необходимо каждый раз запрашивать заново с сервера. Значение private недостаточно хорошее, так как оно позволяет кэшировать в определенных сценариях.

Причиной вашей ошибки является то, что статус аутентификации пользователя изменился после загрузки страницы и до отправки формы. Это может быть вызвано тем, что пользователь вошел в систему или вышел из нее. Маркер защиты от подделки использует аутентифицированного пользователя как часть самого себя, поэтому, если статус аутентификации пользователя изменится, токен больше не будет действительным после отправки. Если пользователь входит в систему или выходит из нее, вам необходимо убедиться, что страница обновлена, чтобы можно было установить новый файл cookie для защиты от подделки.

...