что такое фильтрация недопустимого utf8 с моего сайта PHP?


Мой сайт полностью преобразован для использования utf-8, (mysql, HTTP заголовки, PHP mb_string и т.д.).

Я провожу тестирование на проникновение и пытаюсь отправить недопустимый utf в один из скриптов (используя BurpSuite).

Но когда я публикую недопустимый utf, просто шестнадцатеричный дамп $_POST var, я вижу, что недопустимая последовательность utf уже была санирована, прежде чем я попытаюсь проверить ее с помощью mb_detect_encoding.

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

Является ли это побочным эффектом HTTP-заголовка Content-Type, возможно, это делает мой веб-сервер (lighttpd). Или это делает сам PHP, когда заполняет $_POST?

Я ожидал увидеть недействительный utf hexdumped, предоставив мне самому его санировать.

1 4

1 ответ:

Сам PHP не фильтрует POST-данные, он просто обрабатывает их как двоичные данные, которые всегда "валидны" (это просто данные, ничего не нужно проверять).

Поэтому я подозреваю, что есть какой-то модуль с вашим веб-сервером, который изменяет данные, или есть какое-то расширение PHP, которое фильтрует данные.

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