parâmetros do usuário saneantes MySQL
-
04-07-2019 - |
Pergunta
O que são os personagens perigosos que devem ser substituídos em entrada do usuário quando a entrada dos usuários será inserido em uma consulta MySQL? Eu sei sobre aspas, aspas duplas, \ r \ n. Existem outros?
(eu não tenho a opção de usar um conector inteligente que aceita parâmetros então eu tenho que construir a consulta a mim mesmo e isso vai ser implementado em várias linguagens de programação, incluindo alguns obscuros assim soluções tais como mysql_real_escape_string
em PHP não são válidos)
Solução
mysql_real_escape_string () de mysql.com docs:
A string a partir é codificada para uma string SQL escapou, tendo em conta o conjunto de caracteres atual da conexão. O resultado é colocado em a e um byte nulo de terminação é anexado. Caracteres codificados são NUL (ASCII 0), “\ n”, “\ r”, “\” “"”,“"”, e Control-Z (ver Secção 8.1, ‘valores literais’). (Estritamente falando, MySQL exige apenas que barra invertida e o caracter de aspas costumava citar a string na consulta ser escapado. Esta função cita os outros personagens para torná-los mais fáceis de ler em arquivos de log.)
mysql_real_escape_string () é o conjunto de caracteres conscientes, então replicar todas as suas habilidades (especialmente contra problemas de ataque multi-byte) não é uma pequena quantidade de trabalho.
A partir 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
Outras dicas
O que idiomas você precisa para apoiar? É muito melhor usar uma linguagem de alto-sanitização do que escrever o seu próprio.
Edit: Olhando para mysql_real_escape_string
em php.net:
mysql_real_escape_string()
chamamysql_real_escape_string
função da biblioteca do MySQL, que prepends barras invertidas para os seguintes caracteres:.\x00
,\n
,\r
,\
,'
,"
e\x1a