Очистка пользовательских параметров MySQL

Какие опасные символы следует заменять при вводе пользователем, когда ввод пользователя будет вставлен в запрос MySQL? Я знаю о кавычках, двойных кавычках, \ r и \ n. Есть другие?

@eyelidlessness: PHP, C# .NET 3.0, Java, VB и C (на самом деле язык, разработанный собственными силами, который просто ужасен при выполнении всего, для чего он не предназначен, но поддерживает внедрение функций C для «специального» кода)

Tom 23.10.2008 18:29

На самом деле я искал встроенные в язык встроенные escape-функции, но не нашел соответствующей документации для C# .NET. Как, черт возьми, новым разработчикам работать с ним без хорошей онлайн-документации?

eyelidlessness 23.10.2008 18:43

Если вы вернетесь в любой момент, измените принятый ответ. Micahwittman лучше, чем мой.

eyelidlessness 06.03.2009 11:42

Спасибо за объективность, беспристрастность. И, рад, что это помогло, Том.

micahwittman 26.03.2009 08:31
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
4
4
6 269
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Какие языки вам нужно поддерживать? Гораздо лучше использовать встроенную очистку языка, чем писать свою собственную.

Обновлено: глядя на mysql_real_escape_string на php.net:

mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

Ответ принят как подходящий

mysql_real_escape_string () из документов mysql.com:

The string in from is encoded to an escaped SQL string, taking into account the current character set of the connection. The result is placed in to and a terminating null byte is appended. Characters encoded are NUL (ASCII 0), “\n”, “\r”, “\”, “'”, “"”, and Control-Z (see Section 8.1, “Literal Values”). (Strictly speaking, MySQL requires only that backslash and the quote character used to quote the string in the query be escaped. This function quotes the other characters to make them easier to read in log files.)


mysql_real_escape_string () учитывает набор символов, поэтому репликация всех его возможностей (особенно против проблем с многобайтовыми атаками) - непростая задача.

Из http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html:

AS = addslashes()  
MRES = mysql_real_escape_string()
ACS = addcslashes() //called with "\\\000\n\r'\"\032%_"

Feature                                         AS     MRES    ACS
escapes quote, double quote, and backslash      yes    yes     yes
escapes LIKE modifiers: underscore, percent     no     no      yes
escapes with single quotes instead of backslash no     yes*1   no
character-set aware                             no     yes*2   no
prevents multi-byte attacks                     no     yes*3   no

Я нашел дополнительную информацию по этому поводу: owasp.org/index.php/…

Tom 23.06.2010 12:25

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