Nâng CaoJavaScript iconJavaScript

Prototype pollution là gì và cách phòng tránh?

Prototype pollution là lỗ hổng khi dữ liệu người dùng ghi vào Object.prototype (qua key như __proto__, constructor, prototype).

Hậu quả: nhiều object khác trong app bị ảnh hưởng ngoài ý muốn.

javascript
// Attack vector (lodash merge vulnerability - CVE-2018-3721):
const malicious = JSON.parse('{"__proto__":{"isAdmin":true}}');
Object.assign({}, malicious); // pollutes Object.prototype
console.log({}.isAdmin); // true — bất kỳ object nào cũng bị ảnh hưởng!

Cách phòng tránh: chặn key nguy hiểm, không deep-merge input mù quáng, dùng Object.create(null) hoặc Map, cập nhật thư viện merge lên bản an toàn.

Xem toàn bộ JavaScript cùng filter theo level & chủ đề con.

Mở danh sách JavaScript