如何更改对象属性分配以避免原型污染



我有一行代码看起来像

gMapping[userName] = gMapping[userName] || [];

我看到了Snyk提出的原型污染漏洞。如何解决这一问题?

相关代码:

const gMapping: { [user_name: string]: string[] } = {};
// Map records to dictionaries
dbRecs.forEach(rec => {
const userName = rec.user_name;
const groupId = rec.group_id;
gMapping[userName] = gMapping[userName] || [];
gMapping[userName].push(groupId);
}
});

问题是userName可能是"__proto__"。我不确定这在您的情况下是否可以利用,但当尝试在Object.prototype上调用.push()时,它仍然会导致异常。

为了避免这个问题,可以使用Object.create(null)(不幸的是,使用TypeScript并不容易(,也可以切换到适当的ES6Map<string, string[]>

相关内容

  • 没有找到相关文章

最新更新