里面的URL我有一个处理一个javascript一种关注“登录后重定向”设置的JavaScript重定向允许只为同一个域
window.location = url;
其中“URL”由GET参数提供。 这听起来很糟糕,因为它允许在当前域之外重定向。
所以我想知道如果有一个简单和安全的方式检查“url”是一个绝对的url在同一个域内,只允许在这种情况下重定向。 目前我只是检查URL是否以“/”开头,并且不包含“http”,但我不确定它足以完全防止打开重定向。
if (url[0] === '/' && url.indexOf('http') === -1)
{
window.location = url;
}
正如我在客户端这样做,我知道它仍然不完美,但以前没有保护。
我可以使用好老的JS或jQuery。我也必须支持IE9。
后期编辑:也许我没有提及它清楚,但“网址”应该是一个绝对的网址,没有域的规范。 例如,我有这种地址(与最终URL参数详细地址): http://example.com/Account/Login.aspx?ReturnUrl=%2fCheckout.aspx
我需要避免: http://example.com/Account/Login.aspx?ReturnUrl=http://otherdomain/badintention.aspx
这就是为什么我对上面我目前正在检查,如果它开始由“ /“但我不确定是否足够安全。所以我不能使用你的一些建议。
感谢
谢谢,很高兴知道。不幸的是我不得不支持IE9和其他相当老的浏览器。我编辑了这个问题。 – AFract