gpt4 book ai didi

javascript - 如何在 javascript 中保护 location.href 免受跨站点脚本的影响?

转载 作者:行者123 更新时间:2023-12-05 00:27:49 25 4
gpt4 key购买 nike

在我的 javascript 函数中,我使用 location.href 如下
location.href = "../Floder1/result.jsp";它工作正常,但是当我使用强化工具时,它显示跨站点脚本 which can result in the browser executing malicious code.如何保护它免受跨站点脚本的影响。非常感谢,您的回答将不胜感激。

最佳答案

此代码应仅在 firefox 中有效,因为并非在所有浏览器中都实现了代理
你可以做的是替换原来的location具有代理对象的对象,您可以在其中向代理添加一些逻辑以检查位置的允许值。这不会防止直接修改原始对象( location ),但如果您在代码中仅使用代理对象,您应该没问题。

// suppose we are in example.com
let validator = {
set: function(obj, prop, val) {
if (prop === 'href') {
if(typeof val != 'string'){
throw new TypeError('href must be string.');
}
if (!val.startsWith("https://example.com/")) {
throw new Error('XSS');
}
}
obj[prop] = val;
return true;
},
get: function(obj, prop){
return prop in obj?
obj[prop] :
null;
}
};
let proxiedLocation = new Proxy(location, validator);
console.log(proxiedLocation.href);// work same as location.href
proxiedLocation.href = "https://example.com/page1";// work fine
proxiedLocation.href = "https://example.net/page1";// cause exception

关于javascript - 如何在 javascript 中保护 location.href 免受跨站点脚本的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25440918/

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