Bobby Tables: Una guida per prevenire SQL injection

0 Comments

Perché la scuola di Bobby ha perso i loro record?

La scuola apparentemente memorizza i nomi dei loro studenti in una tabella chiamata Studenti. Quando arriva un nuovo studente, la scuola inserisce il suo nome in questa tabella. Il codice che esegue l’inserimento potrebbe essere il seguente:

La prima riga crea una stringa contenente un’istruzione SQL INSERT. Il contenuto della variabile$studentName viene incollato nell’istruzione SQL., La seconda riga invia l’istruzione SQL risultante al database. L’insidia di questo codice è che i dati esterni, in questo caso il contenuto di $studentName, diventa parte dell’istruzione SQL.

Per prima cosa vediamo come appare l’istruzione SQL se inseriamo uno studente di nome John:

Questo fa esattamente quello che vogliamo: inserisce John nella tabella degli Studenti.

Ora inseriamo piccole tabelle Bobby, impostando$studentName suRobert"); DROP TABLE Students;--., L’istruzione SQL diventa:

Questo inserisce Robert nella tabella degli Studenti. Tuttavia, l’istruzione INSERT è ora seguita da un’istruzione DROP TABLE che rimuove l’intera tabella Students. Ahi!

Come evitare Bobby Tables

C’è solo un modo per evitare attacchi Bobby Tables

  • Non creare istruzioni SQL che includano dati esterni.
  • Utilizzare le chiamate SQL parametrizzate.

Questo è tutto. Non cercare di sfuggire caratteri non validi. Non provare a farlo da soli. Scopri come utilizzare le istruzioni parametrizzate. Sempre, ogni volta.,

La striscia ottiene una cosa fondamentalmente sbagliata. La risposta non è “disinfettare i tuoi input del database” da soli. È soggetto a errori.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *