是否需要对用户数据进行任何转义例程,才能在PHP的header()函数中使用它?
例如对于MySQL,我在将用户数据发送到数据库之前对用户数据运行mysql_real_escape_string(),对于HTML输出,我运行htmlspecialchars()...两者都包装在我自己的自定义函数中,以便首先进行其他处理。
但是对于PHP的header()函数,需要做什么?我应该逃避危险角色吗?
我正在尝试执行以下操作...将查询字符串附加到header()重定向到其他页面
if ( strlen($_SERVER['QUERY_STRING']) > 0) {
$query_string = '?'.$_SERVER['QUERY_STRING'];
}
header('Location: http://domain.com/activate.php'.$query_string);
exit();
任何人都可以获得关于header()函数需要转义什么的任何信息?对于header()语句,冒号和分号字符似乎总是很关键。我应该逃脱那些吗?
最佳答案
不,只要使用PHP> = 4.4.2(如果在PHP4上)和> = 5.1.2(如果PHP5),则无需采取任何措施来保护自己。
参见the docs for header()
。特别:
因此,对于位置 header ,无需大意转义任何。如果您使用的是较早版本,则需要转义所有\r
和\n
字符(以防止插入 header )。
另外,请勿urlencode
查询字符串。它将破坏正在发送的数据的语义。只需将其完整附加即可。