63 of 95 menu

SQL даги майдонлар рўйхати PHP да

Базан фойдаланувчи томонидан майдон номларини оламиз. Бундай ҳолда уларни текширишсиз сўровга киритиб бўлмайди. Фақат оқ рўйхат орқали текширилгандан сўнггина.

Ушбу зарарли мисолни кўриб чиқайлик. Бизда куйидаги сўров мавжуд деб фараз қилайлик:

<?php $query = "SELECT id,login FROM users"; $res = mysqli_query($link, $query); ?>

Сўров натижасини куйидаги тарзда чиқарайлик деб фараз қилайлик:

<?php for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); var_dump($data); ?>

Майдон номлари GET-параметр орқали келади деб фараз қилайлик:

<?php $fields = $_GET['fields']; $query = "SELECT $fields FROM users"; $res = mysqli_query($link, $query); ?>

Биз фойдаланувчи куйидаги нарсани юзлашини кутямиз:

?fields=id,login

Ёмонниёт эса биз кўрсатмоқчи бўлмаган баъзи нарсаларни қўшиши мумкин:

?fields=id,login,password

Дарсда келтирилган мисолни такрорланг. Ушбу зарарлилик мавжудлигини текширинг. Уни оқ рўйхатдан фойдаланиб майдонларни текшириш орқали бартараф этинг.

Сизнинг кодингиз SQL-инъекциядан химойяланганлигига ишонч ҳосил қилинг.

uzckkbnnlda