Безопасность для MySql с mb_convert_encoding, mb_detect_encoding и UTF-8 кодированием
Я планирую использовать код ниже для добавления записей в MySql безопасным способом. Мои вопросы:
- Я всегда вношу свои собственные статьи, используя форму страницы администратора. Так как моя база данных и таблица mysql закодированы в UTF-8, сопоставление: utf8_unicode_ci; и все мои веб-страницы - charset=utf-8, тогда мне все еще нужно первое предложение в функции (предложение начинается с mb_convert_encoding...)
- 2 -) Возможно ли для программы просмотра веб-страниц, его / ее комментарии, введенные в мою текстовую область, не кодируются в utf-8, несмотря на то, что все мои кодировки (web&mysql) установлены на utf-8
Код ниже нуждается в улучшении?
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, но вы не упоминаете набор символов соединения. Вы также должны убедиться, что набор символов подключения установлен правильно.