본문 바로가기

카테고리 없음

[javascript] eval() 대체 하는 방법

728x90
반응형

eval() 은 굉장히 편리하고 유용한 장점이 있지만 , 보안상 취약하여 일반적으로 사용하는 것을 추천하지는 않는다.

 

eval()를 대체하여 사용할 수있는 방법을 알아보자. 

 

eval()이 보안에 취약한 이유는 다음과 같다.

 

eval()은 문자열을 자바스크립트 코드 해석 후 실행한다. 해석하는 과정에서 문자열 참조 범위 내의 지역변수에 접근이 가능하므로 보안에 문제가 있다.

반면, new Function 방식은 문자열을 자바스크립트 코드로 그대로 파싱해서 실행하며, 별도의 함수로 분리되어 실행되므로 eval()처럼 지역변수에 접근 가능하지 못하다. 즉 문자열 참조 범위의 제약이 있기 때문에 eval()에 비해 안전하다.

 

예) (new Function('return '+ 'document.'+form_name+'.'+input_name+'.value ="'+val+'"'))();

 

 --> document.form_name.input_name.value = val

 

 

728x90
반응형