ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
63 of 95 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Список полей в 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-инъекции.

byenru