Mecanismos de Proteção Sugeridos |
Descrição |
Exemplo |
Usar new Set() ou new Map() |
Evita a poluição de protótipos usando estruturas de dados que não permitem a alteração do protótipo global de objetos. |
let allowedTags = new Set(); allowedTags.add(‘b’); if(allowedTags.has(‘b’)){ //…} let options = new Map(); options.set(‘spaces’, 1); let spaces = options.get(‘spaces’). |
Criar objetos com Object.create(null) |
Cria objetos que não herdam do protótipo global Object.prototype, reduzindo a possibilidade de poluição de protótipos. |
let obj = Object.create(null); |
Usar a propriedade proto com cuidado |
Pode ser usado para criar objetos sem protótipo quando necessário, mas deve ser feito com extrema cautela. |
let obj = {proto:null}; |
Métodos de “congelamento” e “selagem” de objetos |
Utilizar Object.freeze() e Object.seal() para impedir modificações nos protótipos dos objetos, embora possa quebrar a aplicação se bibliotecas dependentes modificarem os protótipos integrados. |
|
Configuração de flag do Node.js –disable-proto=delete |
Remove completamente a propriedade proto, reduzindo a superfície de ataque e prevendo certos ataques. É uma medida defensiva em profundidade |
|