как мы должны проверить реферер http-заголовка в aspx .net
-
21-08-2019 - |
Вопрос
Я хочу убедиться, что ничто нежелательное не попадет к рефереру на странице с ошибкой.
Что я должен проверять, чтобы подтвердить http-заголовок.
ниже приведен мой текущий код:
// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{
это приведет к сбою сканирования acunetix, в котором используются %3C и %3E вместо < и > например, мне, очевидно, нужно охватить html-кодировку - есть ли что-то еще, чего мне не хватает?
Обновить Я могу перехватить все сканы acunetix, используя приведенный ниже код:
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
!Regex.IsMatch(this.Request.UrlReferrer.ToString(),
"%3C",
RegexOptions.IgnoreCase))
{
Решение
Я хочу убедиться, что ничто нежелательное не попадет к рефереру на странице с ошибкой.
Затем всегда используйте HTML-экранирование любой строки, включая URL—адреса ссылок, которые вы выводите на страницу ошибки.
Попытка выделить и занести в черный список входные данные, содержащие потенциально опасные символы, в каждом конкретном случае приводит к обратному результату.Вероятно, вы не отловите все возможные атаки и без необходимости запретите допустимые URL-адреса.(Вполне разумно иметь URL-адрес с ‘%3C’ внутри.)
Другие советы
this.Запрос.UrlReferrer может быть нулевым, если ни один реферер не был предоставлен или не участвовал.