我的网站上有一个文本框,允许使用html格式,以允许用户使文本更具可呈现性。
我使用此代码来保护数据库的大多数输入。
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
我不希望它删除html元素,例如<p>
和<strong>
有没有更好的方法来保护文本区域的输入?
答案 0 :(得分:2)
我在向数据库插入数据时只使用mysql_real_escape_string()
,并在从数据库中提取后删除<script>
(和其他一些)等标记。我认为那里有一些正则表达式。
答案 1 :(得分:1)
针对注射的第一道防线是使用准备好的陈述。如果您为查询使用预准备语句,那么用户放入表单中的内容并不重要,因为您已经将代码与数据分开。数据库将看到用户注入的任何代码只是数据而不是代码。因此,您不仅可以获得保护自己免受注射的好处,而且您的代码实际上更清洁,也更加深思熟虑。