Как избежать инъекций SQL с константами SQL - PullRequest
0 голосов
/ 28 мая 2018

Я сделал это там, где моя константа принимает входные данные от пользователей в sql, но мое значение (1) жестко запрограммировано, я пытался использовать bindValue, чтобы защитить это, но bindValue не работает для константы, это можно взломать и объяснить, какэто можно сделать

$type = $_POST['type'] ; 


$update = $conn->prepare("UDPATE book SET $type = 1") ; 
$update->execute() ; 

1 Ответ

0 голосов
/ 28 мая 2018

Вам нужно использовать подготовленные заявления, пожалуйста, посмотрите на bindParam.Кроме того, есть массив столбцов, которые пользователь может редактировать.

$editable_columns = ['author', 'price'];
$type = $_POST['type'] ; 
if(!in_array($type, $editable_columns)) exit("you are not allowed to edit this column");

$update = $conn->prepare("UDPATE book SET :type = 1") ; 
$update->bindParam(':type', $type);
$update->execute() ;

другие примеры здесь: http://php.net/manual/en/pdo.prepared-statements.php

...