Решение Veracode ASP.NET C # Response.Redirect - PullRequest
0 голосов
/ 14 сентября 2018

Это не вопрос, который я задаю, а ответ, который я даю на проблему, которая мучила меня несколько дней.

Нам было поручено создать простое статическое приложение ASP.Net с входом для доступа к сайту. Для этого мы решили использовать проверку подлинности с помощью форм, а сам сайт содержит всего около десятка страниц. Нас попросили использовать Veracode для устранения любых недостатков безопасности, и мы продолжали сталкиваться с угрозой безопасности вокруг Response.Redirect. Веракод продолжал говорить, что нам нужно сравнить белый список доменов и попытаться устранить эту уязвимость, но мы нашли для этого простое решение со встроенной проверкой подлинности с помощью форм.

Для этого решения есть 2 вещи, которые вам нужны.

Во-первых, web.config. В своем теге убедитесь, что у вас есть следующий атрибут:

    <forms  enableCrossAppRedirects="false" ></forms>

Это гарантирует, что любая ссылка для перенаправления, возвращаемая через строку запроса, является только локальной переадресацией. Это не позволит разрешить любые ссылки за пределами вашего сайта.

Далее, в коде позади вашей страницы входа, вам понадобится только следующая строка кода:

FormsAuthentication.RedirectFromLoginPage(username, false, "/");

Это гарантирует, что перенаправление соответствует правилам, установленным в web.config, а также устанавливает cookie для вас.

Предварительно скомпилируйте приложение в Visual Studio или используйте плагин для загрузки и сканирования оттуда, и вы будете поражены, пройдя проверку.

...