这是预防XSS的更好方法


Which is better method to prevent XSS?

哪种方法可以更好地防止XSS攻击?这是我要做的代码。

这行代码足以防止XSS攻击吗?或者我必须用"strip_tags"解析每个元素吗。谢谢你的建议。

  $xss = array_map('strip_tags', $_POST);   

在这个方法中,我必须用"strip_tags"更改许多表单元素。

$f_name = strip_tags($_POST["f-name"]);
$a_id = isset($_POST['a_id']) ? (int)strip_tags($secure_POST['a_id']) : 0;
$qry = $pdo_conn->prepare('INSERT INTO TABLE1(id, f_name) VALUES (?, ?)');
$qry->execute(array($a_id, $f_name));

XSS的意思是Cross Site Scripting,它正在向网站注入恶意html元素。这可以通过在显示时设置适当的字符集(如utf8)和htmlentities来防止

您希望在数据库中保留原始数据,以防万一。如果你想改变反XSS策略,你可以一次完成,因为数据还没有准备好。

我认为你的意思是反sql-injection。准备好的语句本身就可以做到这一点(如果像utf8这样定义了正确的字符集),无需担心。不过,您可以事先进行一些检查,比如检查$_POST['in']是否真的只有int值(例如)。

防止XSS的最佳做法是在输出过程中对数据进行编码和净化,因为打印数据时会发生XSS,然后,请参阅OWASP-XSS(跨站点脚本)防止作弊表以了解更多信息。

使用prepared语句(参数化)可以防止SQL注入攻击,但不能防止XSS,因此,如果允许用户输入数据,则必须同时考虑这两种攻击,因为用户数据应始终被视为不可信。