è abbastanza "mysql_real_escape_string"

3

Recentemente su StackOverflow ho visto molte discussioni che mysql_*_escape_string è deprecato e invece consigliare PDO.
Il modo in cui lo stavo facendo era di consentire solo le lettere e ' nel campo name , consentendo tutti i caratteri nel campo della password (ma poi cancellarlo) e quindi usando mysql_real_escape_string per sfuggire ai caratteri speciali. Quindi ho letto di mysqli ma come vedo è uguale a mysql:

Escapes a string of characters.

Quindi quali sono i problemi di sicurezza nell'utilizzo di mysql_* e non di mysqli o PDO ?

    
posta Mhmd 30.12.2013 - 12:59
fonte

1 risposta

8

Se utilizzi costantemente mysql_real_escape_string ogni volta che inserisci il contenuto in una stringa SQL letterale, va bene, non c'è alcun problema di sicurezza.

Tuttavia, ciò che ci ha insegnato è che:

  • Catturare ogni singola posizione che si inietta in una stringa SQL letterale è difficile. Nel mondo reale, a volte i casi privi di escape del software vengono ignorati, anche quando il codificatore originale ha compreso correttamente l'escape di SQL. Oppure le iniezioni prime vengono aggiunte in seguito alla manutenzione. O l'escape è omesso dove il programmatore pensa che non ci sia la possibilità che nella stringa ci siano caratteri speciali, ma in seguito qualcosa cambierà e quell'ipotesi non è più valida.

  • Sporcare le tue query con ...'.mysql_real_escape_string($value, $db).'... le rende noiose e difficili da leggere.

  • Le persone continuano a non capire il problema di codifica a cui fa riferimento real e di conseguenza non riescono a impostare il set di caratteri nel modo corretto ( mysql_set_charset() , non male SET NAMES ).

Possiamo dedicare il resto del tempo a inseguire questi problemi nel codice scritto con l'estensione mysql , o semplicemente spingere tutti a utilizzare invece query parametrizzate, che funzionano correttamente senza richiedere alcuna comprensione approfondita dell'elaborazione delle stringhe.

    
risposta data 30.12.2013 - 14:36
fonte

Leggi altre domande sui tag