Предотвратить SQL-инъекцию и XSS - PullRequest
0 голосов
/ 08 января 2019

Я обнаружил в своем скрипте 2 проблемы, SQL-инъекции и межсайтовый скриптинг.

SQL-инъекция :

$cate = mysqli_real_escape_string($connection, @$_REQUEST['cat']);
$categ = mysqli_query($connection, "SELECT * FROM articles WHERE category='$cate'");

Где category='$cate' - это проблема.

XSS:

 echo'<a href="../category/category.php?cat='.$id_c.'&pn=1" class="list-group-item">'.$catego.'</a>';

Но я не понимаю, почему $cate не так?

Кто-нибудь является примером для правильного решения?

Спасибо всем

1 Ответ

0 голосов
/ 08 января 2019

Ваша проблема в том, что вы берете значение из запроса непосредственно в запрос SQL.

Лучший способ предотвратить внедрение SQL - это использовать подготовленные операторы. Подготовленные операторы решают проблему SQL-инъекций. Вы должны

  1. Проверьте значение $ _REQUEST ['cat']
  2. Используйте (например) PDO для подготовки заявления (http://php.net/manual/en//pdo.prepared-statements.php)

Чтение: https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

...