Eventuali minacce / Iniezioni SQL possibili, quando la citazione singola viene evasa?

0

Diciamo che quando l'applicazione lato server (come WordPress) applica add_magic_quotes a tutti i parametri GET / POST ( $_GET = add_magic_quotes($_GET); ), quindi chiama l'url:

example.com/?id=a'b

l'app ora ha variabili sicure e l'esecuzione della query SQL non sembra più dannosa:

$id = $_GET['id']; //----> a\'b 
$mysql->query("Select .....   where id='$id'");

C'è qualche caso, quando potrebbe ancora essere una minaccia alla sicurezza? Qualche esempio, per favore? In che modo la query SQL può non essere protetta, in quanto è sfuggita \' carattere all'interno di $id ?

    
posta T.Todua 20.10.2018 - 14:39
fonte

1 risposta

2

Ci sono un paio di (possibili) problemi:

  • Tutto ciò che non proviene da GET / POST è ancora un pericolo (possibili fonti possono essere file, email, database, ecc.)

  • query SQL in cui è necessario rimuovere il preventivo o non è necessario un preventivo in primo luogo (ad esempio in LIMIT , per i valori id (ad esempio SELECT from x WHERE id = $_GET['x'] )) o ulteriormente trasformare l'input (ad esempio in IN ).

  • Problemi di codifica (vedi ad esempio addslashes bypass tramite caratteri multibyte ).
  • Esegui l'escape improprio (ad esempio non è in grado di sfuggire \ ).
  • Rimozione di virgolette in altri punti del codice (aggiungendo virgolette sull'input si maneggiano i dati, in alcuni punti potrebbero essere necessari dati puliti, che potrebbero poi essere trasferiti e ulteriormente elaborati; una query).

Come menzioni WordPress: che ci sono plugin WordPress che hanno vulnerabilità di SQL injection dovrebbero dimostrare che aggiungere citazioni magiche non è abbastanza buono in tutte le situazioni.

Sfuggire come difesa contro l'iniezione SQL è solo un disastro (sicurezza e usabilità saggia). Se stai creando una nuova app, usa solo le istruzioni preparate (sono lo standard per una ragione). Se hai un'app legacy, usare con cautela l'escaping può comunque essere abbastanza buono.

    
risposta data 20.10.2018 - 15:28
fonte

Leggi altre domande sui tag