【发布时间】:2014-08-12 11:52:29
【问题描述】:
我有一个表格,用户填写并发送他们的问题,然后管理员将回答他们,最后这些问题将显示在网站上。
为了防止攻击,我使用了 PDO 和 htmlspecialchars() 函数。我不对输入数据应用任何更改,只使用 PDO 存储它们。但是当我想在页面中显示它们时,我使用 htmlspecialchars()。但这导致即使<p> 标记也作为文本的一部分出现在文本中。有什么问题,我该如何解决?
存储问题:
$stmt = "INSERT INTO tbl_questions (title,question) VALUES (?,?)";
$q = $db->prepare($stmt);
$q->execute(array($_POST['title'],$_POST['question']));
显示问题:
echo htmlspecialchars($title).'<br />'.htmlspecialchars($question);
【问题讨论】:
-
为什么用
htmlspecialchars来显示记录?它们不应该以其他方式显示吗? -
防止XSS攻击
-
那么你应该在数据库中存储问题时使用
htmlspecialchars,在echo处理问题时使用htmlspecialchars_decode。 -
你可以使用
strip_tags();
标签: php html tags xss htmlspecialchars