Это правильная очистка php, или мне стоит попробовать что-нибудь еще?

Я работаю над панелью поиска, которая выполняет поиск в базе данных 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}%'

Я хотел бы знать, есть ли лучший способ сделать это и что я делаю не так.

Большое спасибо за уделенное время!

Взгляните на PDO: php.net/manual/en/book.pdo.php

maio290 01.05.2018 15:48
phptherightway.com/#databases
aletzo 01.05.2018 15:50

Для первого примера вам не нужно запускать htmlspecialchars с жестко запрограммированной строкой, это вообще не дает никаких преимуществ. Это полезно только для отображения данных, отправленных пользователем, без их рендеринга в формате HTML. Для второго, как все уже сказали, просто используйте PDO. trim, stripslashes и htmlspecialchars не являются функциями очистки, они просто приведут к потере информации из исходного представления. В качестве дополнения, w3schools ... не очень хороша.

iainn 01.05.2018 15:51

Или метод параметров, специфичный для SQLSRV: php.net/manual/en/function.sqlsrv-prepare.php

Jared Farrish 01.05.2018 15:52

Если вы не хотите переключаться на PDO, вы также можете использовать mysqli_real_escape_string

Jonathan Lafleur 01.05.2018 15:52

Я не могу использовать PDO, потому что я не использую MySQL, я использую MS SQL с драйвером SQLSRV. Или я могу использовать PDO и с этим?

TakeDown 01.05.2018 15:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
36
0

Другие вопросы по теме