Является ли проверка подлинности форм абсолютно необходимой? - PullRequest
4 голосов
/ 18 августа 2011

Я сейчас пишу внутреннее веб-приложение (с ASP.Net Web Forms), и оно представляет собой странную проблему.Я должен быть в состоянии выдать себя за текущего зарегистрированного в Windows пользователя Windows и выполнить команду на основе их Аутентификации Windows для входа в систему ... И ... если у них не установлена ​​Аутентификация Windows в приложении, которое я должен использовать длявойти в систему, я должен иметь возможность принять имя пользователя и пароль.Я также должен написать приложение в .Net 4.0 и максимально защитить его.Я получил это, чтобы работать, не используя Windows Authentication или Forms Authentication в web.config, и вместо этого устанавливая переменные сеанса для защиты от доступа пользователей к страницам в веб-приложении, кроме входа в систему. Я сделал это, создав переменную сеанса с странным именемсо значением, основанным на их имени пользователя (Windows Auth или нет), а затем секретной переменной сеанса.Секретная переменная находится в файле web.config в виде 256-битной зашифрованной строки, в которой я расшифровываю ее и устанавливаю в качестве секрета сеанса.Для загрузки страницы первая переменная сеанса не может быть пустой, а вторая переменная должна равняться значению дешифрованного ключа ... если переменные не проходят проверку, они перенаправляют их на страницу входа.Я настроил это на каждой странице, универсальном обработчике и методе веб-сервиса в веб-приложении.Я делаю тайм-аут сеанса после нескольких минут бездействия, и при выходе из системы я устанавливаю все переменные сеанса равными нулю, и срок действия всех файлов cookie истекает.(Я также отключаю весь кэш).

Мой вопрос ... Обеспечивает ли это сопоставимость безопасности с проверкой подлинности с помощью форм?Я всегда использовал проверку подлинности с помощью форм, но не могу использовать ее здесь.Если бы я это сделал, пользователям пришлось бы переконфигурировать настройки в IIS и в web.config, чтобы переключать процедуры входа в систему (насколько я знаю, вы не можете использовать как проверку подлинности с помощью форм, так и проверку подлинности Windows для управления безопасностью ваших страниц и других веб-страниц).Ресурсы).С помощью метода, описанного выше, я могу достичь лучшего из обоих миров, но мне любопытно, насколько безопасны мои методы.Есть ли что-нибудь еще, что я могу реализовать здесь, чтобы обеспечить максимальную безопасность, кроме использования аутентификации форм?Можно ли достичь такого же уровня безопасности проверки подлинности с помощью форм, не используя ее?

Спасибо за предварительное понимание!

1 Ответ

5 голосов
/ 26 августа 2011

Обеспечивает ли это сопоставимость безопасности с проверкой подлинности с помощью форм?

нет

Нет

Первое правило, когда речь заходит о безопасности, - не изобретать велосипед, если в этом нет необходимости. Любое решение для домашней выпечки, которое вы придумали, имеет потенциал , который будет таким же безопасным, как и предоставляемое решение, такое как проверка подлинности Windows или Forms. Проблема в том, что отечественные решения редко достигают такого потенциала. Они могут проверить хорошо, но тонкие ошибки могут остаться. Вы не хотите узнать год спустя, что вас взломали шесть месяцев назад. Существующие решения уже были протестированы и использованы в миллионах приложений, в то время как ваши будут использоваться в одном приложении и проверены не более чем несколькими людьми.

Быстрый поиск показывает, что в одной и той же программе можно реализовать проверку подлинности Windows и Forms, поэтому я продолжу ее.

Смешивание форм и безопасность Windows в ASP.NET

...