티스토리 뷰

Dev./javascript

[JS] eval is evil

인쥭 2021. 3. 29. 11:49
반응형

참고 : 

 

eval() - JavaScript | MDN

eval() 주의: 문자열로부터 eval()을 실행하는 것은 엄청나게 위험합니다. eval()을 사용하면 해커가 위험한 코드를 사용할 수 있습니다. 아래에 eval을 절대 사용하지 말 것!을 확인하세요. eval()은

developer.mozilla.org

  • eval은 매개변수로 받은 문자열을 코드로 해석하는 내장함수이다.
console.log('2+2');
console.log(eval('2+2'));

/* 실행 결과
2+2
4
*/

console.log('console.log("abc");');
eval('console.log("abc");');

/* 실행 결과
console.log("abc");
abc
*/

let ingnoh='hello';
eval('ingnoh="world"'); // 외부 변수에 접근이 가능

console.log(ingnoh);

/* 실행 결과
world
*/
  • 과거에는 eval을 사용해야만 처리할 수 있는 문제들이 있었지만, JS가 발전함에 따라 그 필요성이 퇴색되었다고 함.
  • eval을 사용하는 것은 가독성 및 코드 유지 보수 차원에서의 단점이 있다. eval 내부의 문자열이 외부 변수에 접근할 수 있기 때문!
  • 하지만 무엇보다 큰 단점은 eval이 caller의 권한으로 실행된다는 점에 있다.
    • 웹페이지 또는 확장 프로그램의 권한으로 eval이 실행되는 경우, 악의적인 코드를 수행하도록 악용될 수 있다.

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함