⊗ppSpPDQu 58 of 83 menu

Problemer med spørringer i PDO i PHP

Som du allerede bør vite, er SQL-spørringer utsatt for SQL-injeksjoner. PDO-utvidelsen er designet for å bekjempe injeksjoner, men bare sånn, som standard, gjør den ikke dette automatisk.

La oss se på problemet med et eksempel. Anta at vi har følgende spørring, der en variabel settes inn:

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

Anta at variabelen vår kommer et sted fra utsiden, for eksempel fra en GET-parameter. For enkelthetens skyld, la oss likevel bare sette verdien manuelt. Vi forventer en numerisk verdi, for eksempel slik:

<?php $id = 1; ?>

En ondsinnet hacker kan derimot sende følgende verdi (vi antar at vi har et felt role):

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

Resultatet blir at vi ønsket følgende spørring:

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

Men fikk følgende, som henter nettsidens administrator:

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

For å unngå en slik situasjon, har PDO et spesielt mekanisme, som kalles forberedte spørringer. Disse skal vi gå gjennom i neste leksjon.

Utfør med vilje en SQL-injeksjon mot databasen din.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis