Python, uma linguagem de programação equipado com semântica dinâmica , é um favorito entre os programadores e codificadores , mas assim também é MySQL . Integração do MySQL com Python muitas vezes não é um grande problema para os programadores experientes , mas codificação pode ficar um pouco complicado por causa da API C para _mysql mapeamento de função . Fuga é um destes problemas . MySQLdb
Para o banco de dados API Python, MySQLdb muitas vezes é a arma de escolha . Coders pode evitar gravação direta para o módulo usando a interface MySQL . Isso permite a implementação de MySQL C API , mas isso nem sempre pode ser uma tarefa simples . MySQL C API tem seus próprios processos orientados a objetos . Ao trabalhar com funções de fuga, " mysql_escape_string ()" se traduz em MySQL como " _mysql.escape_string (). " O problema com essa estratégia é que sem a devida escapando para o MySQL em Python , pode haver problemas associados com cordas complicadas , como eles não podem escapar corretamente.
variáveis inserção
Outro problema ocorre quando os codificadores inserir variáveis em tabelas MySQL . No trecho a seguir , o codificador insere quatro variáveis em uma tabela.
Cursor.execute ("" " INSERT INTO armário (sapatos, meias, legwarmer , ) VALUES superiores ( Nike, Puma , lã, adidas ) "" ")
Este trecho pode não funcionar a menos que o programador adiciona um caráter próprio de escape , como "% s " . As aspas utilizadas também são caracteres de escape , mas para escapar variáveis , o codificador deve usar "% s" .
Percent Sign
Os modificadores utilizados em a instrução SQL que são responsáveis para os parâmetros de ligação pode ser um pouco confuso . sintaxe estilo " printf" é comumente usado na biblioteca cliente MySQL . O trecho de revista deve então ficar assim:
cursor.execute ("" " INSERT INTO armário (sapatos, meias, legwarmer , ) VALUES superiores ( % ( nike ) s, % ( Puma) s ,% ( lã) s, % ( adidas ) s) "" ")
no entanto, adicionando os caracteres de escape não é suficiente para aliviar o problema. Basta adicionar esses personagens só agora torna o código suscetível a problemas de formato de cordas e aberto a ataques maliciosos.
Considerações
O codificador pode ser capaz de codificar um seguro , trabalhando código, adicionando mais edições ao código. Aqui está o trecho final de trabalho :
cursor.execute ("" " INSERT INTO Canções armário (sapatos, meias, legwarmer , superiores ) VALUES (% s , % s , % s , % s) " , " " , ( nike , puma, lã, adidas ) )
Outro problema pode ocorrer com o símbolo de porcentagem. Se o codificador usa um sinal de porcentagem no script, (especificamente na cadeia de consulta ", deixando de executar ()") , deve ser devidamente escapou - dois sinais de porcentagem deve ser usado. Um dos sinais percentuais atuará como o identificador para fuga.