0

哪种方法可以更好地防止 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));
4

2 回答 2

2

XSS 意味着Cross Site Scripting并且正在注入带有恶意 html 元素的网站。这可以通过在显示时设置适当的字符集(如 utf8)和 htmlentities 来防止。

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

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

于 2013-08-28T18:01:50.407 回答
1

防止 XSS 的最佳做法是在输出期间对数据进行编码和清理,因为在打印数据时会发生 XSS,然后,请参阅OWASP - XSS(跨站点脚本)预防备忘单以获取更多信息。

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

于 2013-08-28T18:06:20.957 回答