Какие опасные символы следует заменять при вводе пользователем, когда ввод пользователя будет вставлен в запрос MySQL? Я знаю о кавычках, двойных кавычках, \ r и \ n. Есть другие?
На самом деле я искал встроенные в язык встроенные escape-функции, но не нашел соответствующей документации для C# .NET. Как, черт возьми, новым разработчикам работать с ним без хорошей онлайн-документации?
Если вы вернетесь в любой момент, измените принятый ответ. Micahwittman лучше, чем мой.
Спасибо за объективность, беспристрастность. И, рад, что это помогло, Том.






Какие языки вам нужно поддерживать? Гораздо лучше использовать встроенную очистку языка, чем писать свою собственную.
Обновлено: глядя на mysql_real_escape_string на php.net:
mysql_real_escape_string()calls MySQL's library functionmysql_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/…
@eyelidlessness: PHP, C# .NET 3.0, Java, VB и C (на самом деле язык, разработанный собственными силами, который просто ужасен при выполнении всего, для чего он не предназначен, но поддерживает внедрение функций C для «специального» кода)