在我的情况下,htmlspecialchars是否足以对抗低级XSS?

时间:2011-03-03 22:37:54

标签: xss htmlspecialchars

我已向管理员添加了功能,因此它会在您要求您登录之前保留您尝试访问的网址。所以,如果你去:

/admin/foo/bar?baz

它会将您重定向到:

/admin/auth/login

登录后,在我的功能插件之前,你总是去/admin/user/profile。现在,我将/admin/foo/bar?baz保存在会话变量$_SESSION['from']中。

在登录<form>中,隐藏值采用会话的值:

<input type="hidden" name="from" value="<?php echo htmlspecialchars($_SESSION['from'];)?>">

然后,在提交表单后,会发生重定向:

header('Location: ' . $_POST['from'] );

我已经看到了与XSS和htmlspecialchars有关的其他问题,并且我知道它不会修复所有可能的XSS尝试,但是这会成功地对抗“低级别”XSS尝试吗?

1 个答案:

答案 0 :(得分:0)

虽然这里没有XSS攻击,但如果您使用的是较旧版本的PHP,则会打开HTTP header injection,这在某些情况下会更糟。

如果您要从HTTP引荐来获取要返回的URL,那么 应该得到足够的保护,确保URL是你< / em>由parsing it控制,然后只存储返回路径和查询字符串。执行最终重定向时,应确保路径的组件正确进行URL编码。您可以将返回URL完全存储在会话中,而不是将其退回给用户以便在登录期间进行操作。