⊗ppSpPDQu 58 of 83 menu

PDO-ի մեջ հարցումների խնդիրները PHP-ում

Ինչպես արդեն պետք է իմանաք, SQL հարցումները ենթակա են SQL ներարկումների: PDO ընդլայնումը նախատեսված է պայքարելու ներարկումների դեմ, բայց պարզապես, լռելյայն, այն դա չի անում:

Եկեք նայենք խնդրին օրինակով: Ենթադրենք մենք ունենք հետևյալ հարցումը, որի մեջ տեղադրվում է փոփոխական.

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

Ենթադրենք մեր փոփոխականը գալիս է ինչ-որ տեղից դրսից, օրինակ՝ GET պարամետրից: Պարզության համար, սակայն, եկեք պարզապես սահմանենք դրա արժեքը ձեռքով: Մենք ակնկալում ենք ինչ-որ թվային արժեք, օրինակ՝ այսպիսին.

<?php $id = 1; ?>

Չարահամար հաքերը, սակայն, կարող է փոխանցել հետևյալ արժեքը (ենթադրենք, որ մենք ունենք role դաշտ).

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

Ստացվում է, որ մենք ցանկանում էինք կատարել հետևյալ հարցումը.

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

Իսկ ստացանք հետևյալը, որն դուրս է բերում կայքի ադմինիստրատորին.

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

Նման իրավիճակից խուսափելու համար PDO-ում նախատեսված է հատուկ մեխանիզմ, որը կոչվում է պատրաստված հարցումներ: Դրանք մենք կքննարկենք հաջորդ դասում:

Կանխամտածված իրականացրեք SQL ներարկում ձեր տվյալների բազայում:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել