URL в заголовке Referer определяется как использующий несколько кодировок - PullRequest
1 голос
/ 12 апреля 2019

Используя owasp.esapi для фильтрации параметров и заголовков входящих запросов, я наткнулся на проблему, в которой, очевидно, заголовок Referer содержит значение, которое рассматривается как использование «множественного кодирования».

Пример:

http://123.abc.xx/xyz/input.xhtml?server=http%3A%2F%2F123.abc.xx%3A7016%2Fxyz&o=1&language=en&t=a074faf3

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

Итак, кто-нибудь может объяснить здесь проблему и как

ESAPI сообщает об ошибке при запуске этого метода в значении заголовка:

value = ESAPI.encoder().canonicalize(value);

Вывод:

 SEVERE: [SECURITY FAILURE] INTRUSION - Mixed encoding (2x) detected

1 Ответ

2 голосов
/ 15 апреля 2019

На самом деле да.Я исправил эту ошибку в следующем выпуске ESAPI, но для этого потребуется изменение API, возможно, такое, в котором может быть ошибка, основанная на ваших данных.

Короче говоря, до моего исправления ESAPI только что сделал Regexпротив URI.Проблема и множество сообщений об ошибках в том, что URI не являются обычным языком.Они сами являются языком.Итак, что произойдет, это то, что рассматриваемый URI будет иметь параметры, которые содержат только сущности HTML, некоторые случайные варианты данных будут выровнены с известными сущностями HTML, такими как &param=foo, которые будут интерпретироваться как сущность ¶, которая является абзацем.Были также некоторые проблемы в отношении ASCII против Unicode (не кодирование bmp.).

В любом случае в кандидате на выпуск для нашей следующей библиотеки будет использоваться новый метод, Encoder.getCanonicalizedURI();

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

...