0

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

/admin/foo/bar?baz

它会将您重定向到:

/admin/auth/login

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

在 login<form>中,隐藏的值取会话的值:

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

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

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

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

4

1 回答 1

0

虽然这里没有 XSS 攻击,但如果您使用的是稍旧的 PHP 版本,您将面临HTTP 标头注入,这在某些情况下可能会更糟。

如果您要从 HTTP 引荐来源网址获取要返回的 URL,那么您应该通过确保该 URL 是通过解析来控制的 URL ,然后只存储返回路径和查询字符串来得到足够好的保护. 在执行最终重定向时,您应该确保路径的组成部分是正确的 URL 编码的。您可以将返回 URL 完全存储在会话中,而不是将其返回给用户以在登录期间进行操作。

于 2011-03-14T00:08:24.953 回答