gpt4 book ai didi

javascript 只允许重定向同一域内的 url

转载 作者:行者123 更新时间:2023-12-01 02:19:26 24 4
gpt4 key购买 nike

我有一个 JavaScript,它通过设置来处理“登录后重定向”问题

window.location = url;

其中“url”由 GET 参数提供。这听起来是一种不好的做法,因为它允许重定向到当前域之外。

所以我想知道是否有一种简单且安全的方法来检查“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

这就是为什么我上面说我目前检查它是否以“/”开头,但我不确定这是否足以确保安全。所以我不能使用你的一些建议。

谢谢

最佳答案

您可以使用(相当新的)URL API:

var redirUrl = "http://www.somewebsite.com/some/path";
var currentHost = location.host;

if (new URL(redirUrl).host != currentHost)
return false;

关于javascript 只允许重定向同一域内的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com