Insicurezza potenziale in non disinfettare le variabili prima di INSERT con istruzione preparata in DOP

2

Uso PDO con istruzioni preparate quando mi collego al mio database, e lo faccio perché è considerato un modo sicuro per farlo, ma una cosa che non ho potuto fare a meno di chiedermi è che i dati inviati da un modulo possono essere dannosi se lo dichiari come:

$entered_email_adress = $_POST['email']; 

prima di inserire i dati nel database? Dovresti comunque disinfettare i dati inviati o non ci sono motivi per farlo?

    
posta DannyCruzeira 13.08.2012 - 14:54
fonte

2 risposte

6

Supponendo che stai inserendo i dati di input in un parametro nella query, è sicuro contro le iniezioni SQL. Tutto ciò che viene inserito in un parametro viene considerato solo come dati e non può diventare parte della sintassi della query. La concatenazione di stringhe, tuttavia, non è sicura.

Quindi questo è sicuro:

$pdo->query('select * from users where user_id = ?', $_POST['id']);

Questo non è:

$pdo->query('select * from users where user_id = ' . $_POST['id']);

Ricorda che dovrai eseguire l'output di escape appropriato se desideri utilizzare i dati in una pagina Web in un secondo momento per interrompere gli attacchi di markup injection e cross-site scripting (XSS).

    
risposta data 13.08.2012 - 15:39
fonte
1

Nella mia esperienza personale e da quello che sono stato portato a capire da persone più competenti di me, non è necessario adottare misure igieniche quando si utilizza PDO per quanto riguarda SQL Injection. In effetti, alcune soluzioni igienico-sanitarie hanno impatti negativi (cambiano i dati in un modo che potresti non volere che cambi).

Anche se non è necessario disinfettare i dati che entrano nel database mentre si usano i PDO, è comunque importante disinfettare i dati che escono. Ad esempio, se qualcuno imposta il proprio nome utente su

<script>send_data_to('Russia')</script>

e tu fai semplicemente eco ai dati non salvati dal mondo, questo potrebbe essere un problema.

    
risposta data 13.08.2012 - 15:38
fonte

Leggi altre domande sui tag