哪种方法可以更好地预防XSS?

时间:2013-08-28 17:58:05

标签: php mysql

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

这行代码是否足以阻止XSS攻击?或者我是否必须使用'strip_tags'解析每个元素。感谢您的任何建议。

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

OR

在这个方法中,我必须用'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));

2 个答案:

答案 0 :(得分:2)

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

您希望将原始数据保留在数据库中,以防万一。如果你想改变反XSS战术,你可以一次完成所有这些,因为数据尚未准备好。

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

答案 1 :(得分:1)

防止XSS的最佳做法是在输出期间对数据进行编码和清理,因为在打印数据时会发生XSS,然后请参阅OWASP - XSS (Cross Site Scripting) Prevention Cheat Sheet以获取更多信息。

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