哪种方法可以防止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));
答案 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,因此,如果您允许用户输入数据,则必须考虑这两种攻击,因为用户数据应始终被视为不受信任。