⊗ppSpPDQu 58 of 83 menu

Problemi delle query in PDO in PHP

Come dovresti già sapere, le query SQL sono vulnerabili alle SQL injection. L'estensione PDO è progettata per combattere le injection, ma di default, non lo fa automaticamente.

Esaminiamo il problema con un esempio. Supponiamo di avere la seguente query, in cui viene inserita una variabile:

<?php $sql = "SELECT * FROM users WHERE id=$id"; $res = $pdo->query($sql); ?>

Supponiamo che la nostra variabile provenga da un input esterno, ad esempio, da un parametro GET. Per semplicità, però, impostiamo semplicemente il suo valore manualmente. Ci aspettiamo un valore numerico, ad esempio, così:

<?php $id = 1; ?>

Un malintenzionato hacker, tuttavia, potrebbe passare il seguente valore (supponiamo che esista un campo role):

<?php $id = '-1 OR role="admin"'; ?>

Il risultato è che noi intendevamo la seguente query:

<?php $sql = "SELECT * FROM users WHERE id=1"; $res = $pdo->query($sql); ?>

Ma abbiamo ottenuto la seguente, che estrae l'amministratore del sito:

<?php $sql = "SELECT * FROM users WHERE id=-1 OR role="admin""; $res = $pdo->query($sql); ?>

Per evitare questa situazione, in PDO è previsto un meccanismo speciale, chiamato prepared statements (query preparate). Le analizzeremo nella prossima lezione.

Esegui intenzionalmente una SQL injection nel tuo database.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta