防止SQL注入和XSS

时间:2019-01-08 13:14:07

标签: mysqli xss sql-injection

我在脚本中发现了这两个问题,即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 :(得分:0)

您的问题是您将请求中的值直接带到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