Это не вопрос, который я задаю, а ответ, который я даю на проблему, которая мучила меня несколько дней.
Нам было поручено создать простое статическое приложение ASP.Net с входом для доступа к сайту. Для этого мы решили использовать проверку подлинности с помощью форм, а сам сайт содержит всего около десятка страниц. Нас попросили использовать Veracode для устранения любых недостатков безопасности, и мы продолжали сталкиваться с угрозой безопасности вокруг Response.Redirect. Веракод продолжал говорить, что нам нужно сравнить белый список доменов и попытаться устранить эту уязвимость, но мы нашли для этого простое решение со встроенной проверкой подлинности с помощью форм.
Для этого решения есть 2 вещи, которые вам нужны.
Во-первых, web.config. В своем теге убедитесь, что у вас есть следующий атрибут:
<forms enableCrossAppRedirects="false" ></forms>
Это гарантирует, что любая ссылка для перенаправления, возвращаемая через строку запроса, является только локальной переадресацией. Это не позволит разрешить любые ссылки за пределами вашего сайта.
Далее, в коде позади вашей страницы входа, вам понадобится только следующая строка кода:
FormsAuthentication.RedirectFromLoginPage(username, false, "/");
Это гарантирует, что перенаправление соответствует правилам, установленным в web.config, а также устанавливает cookie для вас.
Предварительно скомпилируйте приложение в Visual Studio или используйте плагин для загрузки и сканирования оттуда, и вы будете поражены, пройдя проверку.