簡體   English   中英

如何更改此 object 屬性分配以避免原型污染

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM