[STUDY] Web - javascript prototype pollution

2022. 7. 18. 15:47코딩/공부 [STUDY]

반응형

javascript는 객체 지향형 프로그래밍 언어이다. 

하지만 특이하게도 다른 객체지향형 프로그래밍 언어들과는 다르게 상속이 가능한 class가 존재하지 않는다.

 

이를 보완하기 위해 js는 prototype이란게 존재한다.

따라서 prototype으로 상속이 가능하다.

 

var a = {
    r1: '1'
}

var b = {
    r2: '2'
}

b.__proto__ = a;
b.r1 // '1'

 

b에서 a의 r1에 접근할 수 있다.

b는 자식 객체가 되는것이고 a는 부모 객체가 되는것이다.

 

이러한 원리를 이용하여

 

const dotProp = require("dot-prop")
const object = {};
console.log("Before " + object.b); //Undefined
dotProp.set(object, '__proto__.b', true);
console.log("After " + {}.b); //true

와 같은 프로토타입 폴루션이 가능하다.

반응형

'코딩 > 공부 [STUDY]' 카테고리의 다른 글

[STUDY] 어셈블리어 - 5  (0) 2023.02.28
[STUDY] 어셈블리어 - 4  (0) 2023.02.25
[STUDY] 어셈블리어 - 3 (rip,rsp,rbp,스택프레임)  (1) 2023.02.23
[STUDY] 어셈블리어 - 2  (1) 2023.02.23
[STUDY] 어셈블리어 - 1  (0) 2023.02.22