gpt4 book ai didi

javascript - 你能找到关于这个 javascript 问题的任何安全威胁吗?

转载 作者:行者123 更新时间:2023-11-30 07:45:38 25 4
gpt4 key购买 nike

假设我有如下代码:

object[hash].init();

请假设哈希 来自网站哈希 (www.example.com#hash)。

我上面显示的代码中是否存在任何可能的安全漏洞?例如,我是否可以将任何代码放入注入(inject)和触发任何恶意代码的#哈希

谢谢。

最佳答案

这不会有问题,hash不会被评估为 JavaScript 代码,它将被视为字符串。如果 hash 的值不是 object 的有效属性名称,object[hash] 将返回 undefined你会得到一个错误(无法在 undefined 上调用 init)。

另一方面,如果您以字符串被评估为 JavaScript 代码的方式使用 hash那么您就会遇到安全问题。

所以这很好:

object[hash].init();

但这不是(即使有内引号):

setTimeout("object['" + hash + "'].init();", 100);

例如,如果 hash 是一个包含

的字符串
']; alert('foo'); object['something

然后 alert('foo'); 将被执行。可以在不破坏代码的情况下注入(inject)和执行代码。


即便如此,我还是不会这样做。它将代码过多地联系在一起。我可能会创建一个函数映射(类似于您的示例,但不相同):

var hashCodes = {
'someHash': function() {
object.something.init();
}
};

if(hashCodes.hasOwnProperty(hash)) {
hashCodes[hash]();
}

关于javascript - 你能找到关于这个 javascript 问题的任何安全威胁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7147487/

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