Безопасность многобайтовых символов в приложении PHP? [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Безопасность многобайтовых символов в приложении PHP? [дубликат]

Сообщение Anonymous »

В Интернете практически нет информации о том, как правильно обрабатывать многобайтовые символы на протяжении жизненного цикла PHP-скрипта.
Если нам нужно быть уверенными, что наш $_POST code> данные действительны в формате UTF-8 и защищены от недопустимых последовательностей байтов. Какие функции следует использовать, чтобы гарантировать это?
HTML 5 >
В современном Интернете HTML 5 является стандартом, а UTF-8 — используемой по умолчанию (или единственной) кодировкой.
Что нам делать что нужно сделать разработчикам, чтобы сообщить браузеру, что мы везде используем UTF-8 как для ввода, так и для вывода?
Роль браузера
Должен ли браузер выполнять за нас перевод входных символов?
т.е. если пользователь отправляет элемент textarea как часть формы
HTML 5, которая содержит символы в кодировке Windows-1252, вставленные из MS Word с фигурными кавычками, задача браузера - преобразовать Windows-1252< /code> в UTF-8 при вставке (без использования JavaScript) и отправлять на сервер только UTF-8?
Настройки PHP strong>
Какие настройки необходимо установить в PHP в целом, чтобы сообщить PHP, что входящие данные POST и GET должны быть UTF-8, и этот вывод должен быть UTF-8?
Поведение PHP по умолчанию

Выполняет ли PHP какое-либо преобразование кодировки символов автоматически при настройке внутренних массивов $_GET и $_POST?
Предположим, что злоумышленник не использовал браузер, но отправляет намеренно искаженную строку символов напрямую в конечную точку PHP.
Будет ли PHP автоматически заменять неверные последовательности байтов символом подстановки или $_POST содержат необработанные байты, которые могут иметь опасные последовательности и могут быть любой кодировкой?
Иными словами, PHP автоматически удаляет неверные символы или это работа разработчика?
Очистка пользовательского ввода
Если разработчик несет ответственность за обеспечение того, что входящий пользовательский ввод действительно действителен, UTF-8 а не неверный формат UTF-8 или какую-либо другую кодировку, какой инструмент следует использовать?
В PHP есть функция mb_scrub(), но кажется, что эта функция заменяет недопустимые последовательности байтов простым вопросительным знаком ?, а не символом замены U+FFFD в Юникоде.
Похоже, вам следует иметь возможность устанавливать символ замены с помощью

Код: Выделить всё

mb_substitute_character(0xFFFD);
Но на странице руководства написано: «Этот параметр влияет на mb_convert_encoding(), mb_convert_variables(), mb_output_handler() и mb_send_mail()."
В нем не упоминается mb_scrub().
Вопрос
Итак, вопрос, над которым все это работает:
Если мы хотим получить наши данные $_POST и иметь он очищает недопустимые последовательности байтов и заменяет недопустимые байты на 0xFFFD. Какова правильная функция для этого, чтобы мы могли быть уверены, что работаем с безопасной строкой UTF-8 , что бы нам ни сказал пользователь?

Подробнее здесь: https://stackoverflow.com/questions/788 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»