将未经处理的数据放入 header() 函数

Putting unsanitized data in header() function

如果不在 header 重定向内过滤数据,我的网站是否容易受到攻击?

例如:

$foo = $_GET['foo'];

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

die();

如果答案是肯定的,它们是什么类型的攻击,简单地使用 htmlentities 转义数据是否是一个可行的解决方案?

$foo = $_GET['foo'];

$foo = htmlentities($foo);

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

die();

URL 参数未执行,因此您不会敞开心扉进行攻击。但是,未能对数据进行编码可能会导致参数被错误解释。你应该使用 urlencode():

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