За это отличная откровенная статья , написанная сек. Эксперт , я становлюсь довольно подозрительным к входящим строкам - из-за того, что mysql_real_escape_string может быть обманут ...
Проблема строго связана с многобайтовыми наборами символов, такими как GBK. Если пользовательский ввод не является многобайтовым вводом, то никаких проблем, никаких проблем там нет, так как mysql_real_escape_string будет достаточно хорош для внедрения SQL-кода - при условии, что вы правильно выполняете базовые проверки типов данных.
Я не говорю, что многобайтовые - это зло ... но если вам не приходится иметь дело с многобайтовыми ситуациями, тогда не надо. Придерживайтесь utf-8, если это работает для вас, и просто оставайтесь в utf-8 все время ... Но вопрос в том, как? Потому что именно пользователь запускает процесс, отправляя вам строку не в формате utf-8 и, возможно, многобайтовую строку, такую как GBK ...
Как вы можете быть уверены, что сможете успешно и надежно отклонить этот пользовательский ввод? Из того, что я читаю / изучаю, невозможно узнать, в каком наборе символов находится входящая строка пользователя. Тогда что?
Другими словами, как убедиться, что вы работаете с пользовательскими строками utf-8? Я спрашиваю об этом, потому что все функции фильтра / очистки PHP предназначены для работы с вводом utf-8, они не знают, как работать с многобайтовыми данными? Как отмечается в статье, измерения защиты становятся причиной отказа.
ооо, пожалуйста, не говорите просто использовать готовые заявления ... уже в курсе этого превосходного варианта.