Python , un linguaggio di programmazione dotato di semantica dinamica , è uno dei preferiti tra i programmatori e programmatori , ma lo è anche MySQL . L'integrazione di MySQL con Python spesso non è molto più di un problema per i programmatori esperti , ma la codifica può diventare un po ' contorto a causa delle API C per la mappatura funzione _mysql . Fuggire è uno di questi problemi . MySQLdb
Per il database API di Python , MySQLdb è spesso l'arma di scelta . Codificatori possono evitare di scrittura diretta al modulo utilizzando l'interfaccia di MySQL . Questo permette l'implementazione di MySQL C API , ma questo potrebbe non essere sempre un compito semplice. MySQL C API ha i propri processi orientati agli oggetti . Quando si lavora con le funzioni di fuga , " mysql_escape_string ( ) " si traduce in MySQL come " _mysql.escape_string ( ) . " Il problema di questa strategia è che senza fuggire per MySQL in Python , ci possono essere problemi associati con le stringhe complicate , in quanto non possono sfuggire correttamente .
Inserimento variabili
Un altro problema si verifica quando i programmatori inseriscono variabili in tabelle MySQL . Nel seguente frammento di codice , gli inserti coder quattro variabili in una tabella.
Cursor.execute ( " " " INSERT INTO armadio ( scarpe , calzini , scaldamuscoli , superiore) VALUES ( nike , puma , lana , adidas ) " " " ) per
Questo frammento di codice potrebbe non funzionare a meno che il codificatore aggiunge un buon carattere di escape come "% s " . Le doppie virgolette utilizzati sono anche i personaggi sfuggono , ma per le variabili in fuga , il coder devono utilizzare "% s" .
Segno di percentuale
I modificatori utilizzati in l'istruzione SQL che sono responsabili per il legame dei parametri può essere un po 'di confusione . sintassi stile " printf" è comunemente usato nella libreria client MySQL . Il frammento riveduto dovrebbe quindi apparire così:
cursor.execute ( " " " INSERT INTO armadio ( scarpe , calzini , scaldamuscoli , superiore) VALUES ( % ( nike ) s , % ( puma ) s , % (lana ) s , % ( adidas ) s ) " " " ) per
Tuttavia , aggiungendo i caratteri di escape non è sufficiente per alleviare il problema. Solo l'aggiunta di questi personaggi solo ora rende il codice suscettibile di formattare i problemi di stringa e aperto ad attacchi dannosi.
Considerazioni
Il codificatore può essere in grado di codificare una cassetta di sicurezza , di lavoro codice aggiungendo ulteriori modifiche al codice. Ecco il frammento finale di lavoro :
cursor.execute ( " " " INSERT INTO Canzoni armadio ( scarpe, calze, legwarmer , superiori) VALUES ( % s , % s , % s , % s ) " , " " , ( nike , puma , lana , adidas ) ) per
Un altro problema può verificarsi con il simbolo di percentuale . Se il codificatore utilizza un simbolo di percentuale nello script , (in particolare nella stringa di query ", non riuscendo a execute () " ) , deve essere adeguatamente sfuggito - due segni percentuali devono essere utilizzati . Uno dei segni percentuali agirà come identificatore per la fuga.