将未经处理的数据放入 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");
如果不在 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");