Нужно ли использовать токен nonce в ASP.NET WebForms для защиты от CSRF? - PullRequest
1 голос
/ 31 марта 2011

В приложении ASP.NET WebForms, которое:

  1. Устанавливает ViewStateUserKey для идентификатора сеанса через

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (User.Identity.IsAuthenticated)
            ViewStateUserKey = Session.SessionID;
    }
    

    на производной базовой странице

  2. Использует только POSTbacks для выполнения любых чувствительных действий

  3. EnableViewStateMac всегда включен

Мне все еще нужно реализовать скрытое значение поля формы со случайным токеном, который проверяется при последующих запросах для защиты от CSRF-атак?

1 Ответ

3 голосов
/ 01 апреля 2011

Это не полный метод защиты от CSRF. Любой запрос без обратной передачи, такой как GET, все еще уязвим. Также я не использовал этот метод, и, честно говоря, манипуляции с ViewState могут быть гораздо более серьезной уязвимостью. Идея предоставления клиенту viewstate не является всесторонним подходом к защите. Криптографический одноразовый номер - это очень хорошее решение проблемы, поэтому его чаще всего используют. Но это не единственное решение, вы должны прочитать Шпаргалку по профилактике CSRF . Для записи «Одноразовый номер» просто означает значение, которое используется только один раз, первичный ключ - это одноразовый номер, но это не останавливает CSRF. Вам нужен криптографический одноразовый номер, значение которого используется только один раз, AND его очень сложно угадать.

...