保护我的html表单免受注入

时间:2011-11-05 16:40:34

标签: php mysql html

我的网站上有一个文本框,允许使用html格式,以允许用户使文本更具可呈现性。

我使用此代码来保护数据库的大多数输入。

function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

我不希望它删除html元素,例如<p><strong>

有没有更好的方法来保护文本区域的输入?

2 个答案:

答案 0 :(得分:2)

我在向数据库插入数据时只使用mysql_real_escape_string(),并在从数据库中提取后删除<script>(和其他一些)等标记。我认为那里有一些正则表达式。

答案 1 :(得分:1)

针对注射的第一道防线是使用准备好的陈述。如果您为查询使用预准备语句,那么用户放入表单中的内容并不重要,因为您已经将代码与数据分开。数据库将看到用户注入的任何代码只是数据而不是代码。因此,您不仅可以获得保护自己免受注射的好处,而且您的代码实际上更清洁,也更加深思熟虑。