【发布时间】:2015-07-22 06:36:18
【问题描述】:
我有一个 javascript,它通过设置处理“登录后重定向”问题
window.location = url;
其中“url”由 GET 参数提供。 这听起来是一种不好的做法,因为它允许重定向到当前域之外。
所以我想知道是否有一种简单且安全的方法来检查“url”是否是同一域内的绝对 url,并且仅在这种情况下允许重定向。 目前我只是检查 url 是否以“/”开头并且不包含“http”,但我不确定它是否足以完全防止打开重定向。
if (url[0] === '/' && url.indexOf('http') === -1)
{
window.location = url;
}
当我在客户端执行此操作时,我知道它仍然不完美,但以前根本没有任何保护。
我可以使用好的旧 JS 或 jquery。我还要支持IE9。
后期编辑:也许我没有足够清楚地提到它,但“url”应该是一个绝对 url,没有域规范。 例如,我有这种地址(末尾带有 url 参数的完整地址): http://example.com/Account/Login.aspx?ReturnUrl=%2fCheckout.aspx
我需要避免: http://example.com/Account/Login.aspx?ReturnUrl=http://otherdomain/badintention.aspx
这就是为什么我在上面告诉我,我目前检查它是否以“/”开头,但我不确定它是否足以保证安全。所以我不能使用你的一些建议。
谢谢
【问题讨论】:
标签: javascript jquery url redirect