63 of 95 menu

Daftar Field dalam SQL di PHP

Kadang-kadang ada situasi di mana kita menerima nama field dari pengguna. Dalam kasus ini, mereka juga tidak bisa langsung disisipkan ke dalam kueri. Hanya setelah pemeriksaan melalui whitelist.

Mari kita lihat contoh kerentanannya. Misalkan kita memiliki kueri berikut:

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

Misalkan hasil kueri kita tampilkan dengan cara berikut:

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

Misalkan nama field datang melalui parameter GET:

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

Kami berharap pengguna akan mengirimkan sesuatu seperti ini:

?fields=id,login

Tetapi penyerang dapat menambahkan sesuatu yang tidak ingin kami tampilkan:

?fields=id,login,password

Reproduksi contoh yang diberikan dalam pelajaran. Periksa adanya kerentanan. Perbaiki dengan menggunakan whitelist field.

Pastikan kode Anda terlindungi dari SQL injection.

csbnfrhuby