Я работаю над панелью поиска, которая выполняет поиск в базе данных SQLSRV. Я не могу использовать метод очистки для mysql, поскольку sqlsrv не имеет такой вещи. Итак, посмотрев в Интернете, я использовал несколько техник, в основном из w3schools. Теперь я не знаю, старые ли они, пригодные для взлома или даже действительные. Чтобы отправить форму, я использовал эту разметку:
enter <form action = "<?php echo htmlspecialchars('cautare.php');?>" method = "post" id = "formular" name = "formular">code here
в надежде, что хакер не сможет ввести код в ссылку для его выполнения. Затем в php:
$search = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$search = test_input($_POST["search"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
Эта часть взята из W3Schools и кажется достаточно безопасной после того, как я пару раз прочитал их объяснение. Я сделал все это для защиты от атаки SQL Injection, поскольку я использую этот код для поиска в базе данных:
WHERE den_produs LIKE '%{$search}%'
Я хотел бы знать, есть ли лучший способ сделать это и что я делаю не так.
Большое спасибо за уделенное время!
Для первого примера вам не нужно запускать htmlspecialchars
с жестко запрограммированной строкой, это вообще не дает никаких преимуществ. Это полезно только для отображения данных, отправленных пользователем, без их рендеринга в формате HTML. Для второго, как все уже сказали, просто используйте PDO. trim, stripslashes и htmlspecialchars не являются функциями очистки, они просто приведут к потере информации из исходного представления. В качестве дополнения, w3schools ... не очень хороша.
Или метод параметров, специфичный для SQLSRV: php.net/manual/en/function.sqlsrv-prepare.php
Если вы не хотите переключаться на PDO, вы также можете использовать mysqli_real_escape_string
Я не могу использовать PDO, потому что я не использую MySQL, я использую MS SQL с драйвером SQLSRV. Или я могу использовать PDO и с этим?
Взгляните на PDO: php.net/manual/en/book.pdo.php