将未经过处理的数据放在header()函数中

时间:2015-02-06 00:55:24

标签: php security header sanitization

我是否因为没有过滤标题重定向中的数据而容易受到攻击?

例如:

$foo = $_GET['foo'];

header("Location: /bar.php?foo=$foo");

die();

如果答案是肯定的,那么它们是什么类型的攻击,并且只是通过htmlentities逃避数据是一个可行的解决方案?

$foo = $_GET['foo'];

$foo = htmlentities($foo);

header("Location: /bar.php?foo=$foo");

die();

1 个答案:

答案 0 :(得分:0)

未执行网址参数,因此您无法打开攻击。但是,未能对数据进行编码可能会导致参数被错误地解释。您应该使用urlencode()

$foo = urlencode($foo);
header("Location: /bar.php?foo=$foo");