我在插入一个小于号"<"
然后插入另一个字符时遇到问题,让我们说"<p"
或类似"<---me"
。我通过这个功能:
function checkValues($value)
{
$value = trim($value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = strtr($value,array_flip(get_html_translation_table(HTML_ENTITIES)));
$value = strip_tags($value); //this line doesnt accept lessthan
$value = mysql_real_escape_string($value);
$value = htmlspecialchars ($value);
return $value;
}
我知道如果我删除了strip_tags(),那么将接受符号,但是通过我的函数后将它保存到数据库是否安全?或者有没有办法让lessthan符号通过这个函数而没有任何保存到数据库的问题?
答案 0 :(得分:4)
您不应将已清理的用户数据保存到数据库(htmlspecialchars()
)。您应该在输出之前对其进行消毒,以防止出现问题。
实际上,将<
符号放入数据库并没有错。确保在正确的背景下使用正确的清理工具(在htmlspecialchars()
后使用mysql_real_escape_string()
)
你的功能有很多错误,请看这个例子:
此值将在您的函数中创建
\"
此值应在您的函数中创建
\"
这是非常错误的
那么你的功能应该是什么样的?
function checkValues($value)
{
$value = trim($value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
return $value;
}
// just before outputing
function beforeOutput($value) {
return htmlspecialchars($value);
}