Что такое фильтрация недействительных utf8 с моего сайта PHP? - PullRequest
4 голосов
/ 24 октября 2011

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

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

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

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

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

Я ожидал увидеть недействительного utf в шестнадцатеричном формате, оставив меня самому очищать его.

1 Ответ

1 голос
/ 28 октября 2011

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

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

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

...