⊗ppSpPDQu 58 of 83 menu

Problemer med forespørgsler i PDO i PHP

Som du allerede burde vide, er SQL-forespørgsler modtagelige for SQL-injektioner. PDO-udvidelsen er designet til at bekæmpe injektioner, men som standard gør den det ikke automatisk.

Lad os se på problemet med et eksempel. Antag, at vi har følgende forespørgsel, hvor en variabel indsættes:

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

Lad os antage, at vores variabel kommer et sted fra udefra, for eksempel fra en GET-parameter. For enkelhedens skyld, lad os dog bare sætte dens værdi manuelt. Vi forventer en eller anden numerisk værdi, for eksempel denne:

<?php $id = 1; ?>

En ondsindet hacker kan dog sende følgende værdi (vi antager, at vi har et felt role):

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

Resultatet er, at vi ønskede følgende forespørgsel:

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

Men fik følgende, som henter webstedets administrator:

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

For at undgå denne situation har PDO en speciel mekanisme, som kaldes forberedte forespørgsler. Dem vil vi se nærmere på i næste lektion.

Foretag med vilje en SQL-injektion mod din database.

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