关于表单提交/显示的安全性的意见

时间:2010-11-23 23:58:25

标签: php security

我正在建立一个评论网站,允许用户提交将存储在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

有人在此计划中看到任何明显的安全漏洞吗?这对我来说似乎很安全,但这是我建立的第一个允许用户提交数据的网站,所以我想确保我不会让自己变得脆弱。

谢谢!

2 个答案:

答案 0 :(得分:1)

在将数据放入数据库之前,您应该对数据进行数据库转义,并在拉出数据时进行HTML转义。这样,您可以在将来处理用户帖子中的HTML而不会发现“哎呀,我把它弄糟”。

转义插入数据的最佳方法是使用PDO。

为了显示数据,htmlentities可能就足够了。

答案 1 :(得分:0)

我同意Borealid,但是想补充一点,您可能希望使用preg_replace()来完全删除任何JavaScript脚本,而不是仅从中剥离标记。