php使用htmlspecialchars验证输出

时间:2014-03-30 15:59:27

标签: php htmlspecialchars

我设置了一个php cookie

setcookie('pr','gulfstream',time()...etc...)

我的验证页面包含如下数组和语句。

$planes = array('gulfstream','Piper','Citation');

$abc = isset($_COOKIE['pr']) && in_array($_COOKIE['pr'],$planes) ? $_COOKIE['pr']:0;

我的访问者页面使用:

echo $abc;

问题:输出到页面是否安全,或者我应该进一步验证语句:

$abc = isset($_COOKIE['pr']) && in_array($_COOKIE['pr'],$planes) ? htmlspecialchars($_COOKIE['pr']):0; 

2 个答案:

答案 0 :(得分:1)

我认为没有办法在此示例中使用此代码

无论如何,我认为你必须意识到它是通过类型杂耍(通常转换为整数0)的可能性使其可利用。 这就是为什么我建议您使用in_array的严格模式

in_array($_COOKIE['pr'],$planes, true); //third parameter enforces type checking

答案 1 :(得分:1)

即使你已经验证了cookie,它仍然意味着包含文本,而不是HTML代码。在输出HTML文档中的文本之前,应始终使用htmlspecialchars。