Безопасность для MySql с mb_convert_encoding, mb_detect_encoding и UTF-8 кодированием

Я планирую использовать код ниже для добавления записей в MySql безопасным способом. Мои вопросы:

  1. Я всегда вношу свои собственные статьи, используя форму страницы администратора. Так как моя база данных и таблица mysql закодированы в UTF-8, сопоставление: utf8_unicode_ci; и все мои веб-страницы - charset=utf-8, тогда мне все еще нужно первое предложение в функции (предложение начинается с mb_convert_encoding...)
  2. 2 -) Возможно ли для программы просмотра веб-страниц, его / ее комментарии, введенные в мою текстовую область, не кодируются в utf-8, несмотря на то, что все мои кодировки (web&mysql) установлены на utf-8
  3. Код ниже нуждается в улучшении?

    function safe_input_into_mysql($safe_str)
    {
    $safe_str = mb_convert_encoding($safe_str, 'UTF-8', mb_detect_encoding($safe_str));
    $safe_str = mysqli_real_escape_string($dbc, $safe_str);
    return $safe_str;
    }

1 ответ

Решение

Каким образом вы хотите, чтобы записи базы данных были "безопасными"? Безопасно от чего?

Для связи с базой данных вы должны использовать параметризованные запросы. Это означает, что не будет угрозы безопасности на уровне базы данных. Это не означает, что сохраненные данные могут быть неопасными, если их использовать в другом месте (например, выводить как часть документа HTML) неохраняемым образом.

Вы упомянули, что набор символов таблицы - UTF-8, но вы не упоминаете набор символов соединения. Вы также должны убедиться, что набор символов подключения установлен правильно.

Другие вопросы по тегам