[英]How can I change this the object property assignment to avoid prototype pollution
我有一行代碼看起來像
gMapping[userName] = gMapping[userName] || [];
我看到了 Snyk 提出的 Prototype 污染漏洞。 如何解決?
相關代碼:
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 並不容易)或切換到正確的 ES6 Map<string, string[]>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.