这是我为转义字符串创建的函数...
function clean_array($ value)
{
foreach($value as $key => $val)
{
if(get_magic_quotes_gpc())
{
$value[$key]=stripslashes($val);
}
$value[$key]= mysql_real_escape_string($val);
$value[$key]=htmlentities($val);
$value[$key]=htmlspecialchars($val);
}
return $value;
unset($val);
}
请逐步解释bcoz我是PHP的初学者。如果你给出解决方案,我非常感谢你...
答案 0 :(得分:2)
你的代码完全没有任何成就。在开始担心编写“安全”代码之前,您应该学习基本编码。在你试图逃离悬崖之前走路。
1)magic_quotes已被弃用了很长时间,实际上已从最新的PHP版本中删除。在处理程序中编写它只会有助于保持旧的/过时的/不安全的PHP版本。
2)你不断地接受$val
,对它做一些事情,然后将得到的新数据存储到变量中。但是,您始终使用 SAME 来源和 SAME 目的地。因此,htmlentities()调用会破坏/覆盖您的mysql_real_escape_string,而htmlspecialchars()调用则会对其进行销毁/覆盖。实际上,整个代码块具有以下操作功能:
foreach ($values as $val => $key) {
$values[$key] = htmlentities($val);
}
3)不要做一体化安全功能。消毒/保护数据完全取决于您将如何使用“安全”数据。在对将存储在数据库中的数据进行html转换时,存在绝对的零点。同样,如果你永远不会允许这些“安全”值进入数据库,那么对它们进行SQL转义是没有意义的。您所做的只是执行一系列操作,这些操作很可能只是稍后需要再次撤消,因为您没有针对数据将用于的任何环境。
这很像穿上雨衣,皮大衣,睡袋和水肺潜水装备,然后决定你是去外面游泳还是游泳,或者是冬天出去。
答案 1 :(得分:0)
htmlspecialchars($string, ENT_QUOTES)