防止 SQL 注入和 XSS

Posted

技术标签:

【中文标题】防止 SQL 注入和 XSS【英文标题】:Prevent SQL Injection and XSS 【发布时间】:2019-06-03 04:39:55 【问题描述】:

我在我的脚本中发现了这 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 错了?

谁是正确解决方案的示例?

谢谢大家

【问题讨论】:

How can I prevent SQL injection in PHP?的可能重复 【参考方案1】:

您的问题是您将请求中的值直接传递给 SQL 查询。

防止 SQL 注入的最佳方法是使用预准备语句。准备好的语句解决了 SQL 注入问题。你必须

    验证 $_REQUEST['cat'] 值 使用(例如)PDO 来准备语句 (http://php.net/manual/en//pdo.prepared-statements.php)

阅读:https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

【讨论】:

以上是关于防止 SQL 注入和 XSS的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 XSS 和 SQL 注入

防止SQL注入和XSS注入的方法总结

PHP 通用清洁功能 - 防止SQL,XSS和JS注入

StringEscapeUtils的常用使用,防止SQL注入及XSS注入

node防止sql注入 xss攻击和密码加密

SpringMVC如何有效的防止XSS注入?