我正在建立一个评论网站,允许用户提交将存储在MySQL数据库中的评论。我将手动审核评论内容,然后在我的网站上显示。这是我用于清理数据的自定义函数(表单上的每个项都传递给此函数):
function cleanDataForDB($data) {
$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}
我还没有编写脚本来显示已经批准的评论,但是我计划通过html_entity_decode()函数将我的MySQL表中的所有字段传递给我的页面的HTML
有人在此计划中看到任何明显的安全漏洞吗?这对我来说似乎很安全,但这是我建立的第一个允许用户提交数据的网站,所以我想确保我不会让自己变得脆弱。
谢谢!
答案 0 :(得分:1)
在将数据放入数据库之前,您应该对数据进行数据库转义,并在拉出数据时进行HTML转义。这样,您可以在将来处理用户帖子中的HTML而不会发现“哎呀,我把它弄糟”。
转义插入数据的最佳方法是使用PDO。
为了显示数据,htmlentities
可能就足够了。
答案 1 :(得分:0)
我同意Borealid,但是想补充一点,您可能希望使用preg_replace()来完全删除任何JavaScript脚本,而不是仅从中剥离标记。