обезопасить sql запрос

104
18 мая 2021, 19:20

прошу подсказать, как можно обезопасить запрос от sql инъекций. Запрос такого вида:

    SELECT *
    FROM gmcrm_gib_working_information t1
    JOIN gmcrm_gib_wi_names t2 ON t1.wi_id = t2.wi_id
    JOIN gmcrm_gib_wi_values t3 ON t2.wi_names_id = t3.wi_names_id
    WHERE t3.wi_status = 1 AND t3.wi_gib_number = $num_gib

Где $num_gib - это число от 1 до 6, которое передаётся для выгрузки определённых данных.

Answer 1

Если говорить о pdo, то: https://www.php.net/manual/ru/pdo.prepare.php

$num_gib = rand(1,6);
$sql = 'SELECT *
    FROM gmcrm_gib_working_information t1
    JOIN gmcrm_gib_wi_names t2 ON t1.wi_id = t2.wi_id
    JOIN gmcrm_gib_wi_values t3 ON t2.wi_names_id = t3.wi_names_id
    WHERE t3.wi_status = 1 AND t3.wi_gib_number = :num_gib'
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':num_gib' => $num_gib);
$red = $sth->fetchAll();

Так же привязывать параметры и значения можно через:

https://www.php.net/manual/ru/pdostatement.bindparam.php

https://www.php.net/manual/ru/pdostatement.bindvalue.php

READ ALSO
Как занести массив в базу данных mysql?

Как занести массив в базу данных mysql?

У меня есть вот такой массив который хранится в сессии $_SESSION['product_ids']Для занесения данных в БД я использую ORM RedBeanPHP

300
Installation error of 1c bitrix

Installation error of 1c bitrix

Я действовал согласно видео на Install PHP, Apache and MySQLОдним из отличий является то, что у меня была несколько другая иерархия папок и файлов

329
Количество входных процессов (EP)

Количество входных процессов (EP)

Прошу советаСделан сайт на laravel - небольшой магазин\каталог

105
Локальная база Microsoft Access

Локальная база Microsoft Access

У меня есть программа для учета, не знаю на чем написана, подключена к локальной базе Microsoft Access, она связана с другим компом по локальной сетиМогу...

87