PDA

View Full Version : [PHP\MySQL] Proteggersi da attacchi di tipo SQL injection


Omicron36
25-10-2015, 17:31
Salve a tutti,

Ho alcuni dubbi circa quale sia l'approccio più sicuro per evitare le vulnerabilità di tipo SQL. Studio da poco questi argomenti e, da ciò che ho capito, gli attacchi di tipo SQL injection sono molto pericolosi.

Vorrei avere certezze circa quale sia un buon metodo per difendersi e, nello specifico, se tale approccio sia corretto. Parto dal codice per l'inserimento dei dati in una tabella:


$sql = 'INSERT INTO tabella SET colonnatesto = :colonnatesto';
$a = $pdo->prepare($sql);
$a->bindValue(':colonnatesto', $_POST['testodainserire']);
$a->execute();


Questo codice dovrebbe permettere al server MySQL di prepararsi ad eseguire una query utilizzando un segnaposto e, solo dopo, inserire nel segnaposto il valore effettivo del contenuto da inviare. A questo punto il contenuto (se fosse codice) sarebbe "bonificato" e reso non pericoloso.

Tutto ciò è corretto? Ho capito bene?
Qualcuno di voi, per sicurezza, potrebbe spiegarmi meglio (step by step) il meccanismo di questo codice?

Grazie!

les2
26-10-2015, 19:12
rispondendoti velocemente e in breve sì, hai capito bene e il metodo è corretto.
ti metto questo link che ho sottomano :
http://php.net/manual/it/function.oci-bind-by-name.php
è del driver oracle e non pdo ma la logica è la stessa.

è buona prassi fare comunque un escape con htmlspecialchars() o simili in base alle tue necessità se le variabili vengono passate.
controllale sempre e non fidarti mai troppo

:)

Omicron36
26-10-2015, 22:07
Grazie mille per la risposta :)