JavaScript - 전역 범위 보호하기

* 자바스크립트의 결함 중 하나는 페이지의 모든 스크립트가 공유되는 전역 컨텍스트에서 실행된다는 점으로, 악용될 경우 웹 사이트는 교차 사이트 스크립팅 공격에 취약하게 된다.


* 공유 전역 컨텍스트는 다른 문제도 일으킨다. 예를 들어 많은 스크립트가 한 페이지에서 실행되는데, 모든 스크립트를 개발자가 결정하는 것은 아니다(광고 스크립트 등이 대표적이다). 이 스크립트들은 전역 공간에서 실행되며 모두 같은 전역 변수에 접근할 수 있다. 이러한 스크립트 두 개가 같은 전역 변수를 사용하게 되면 서로 간섭하기 시작하고, 그러면 코드는 망가지게 된다.






* 전역 범위의 사용을 최소화하는 것은 간섭을 막고 긴 디버깅 시간을 줄이는 데 도움이 되는 방어적 기법으로 변수를 전역적으로 저장하는 것을 완전히 없앨 수는 없지만, 네임스페이싱과 같은 기법을 사용하여 최소화할 수 있다.




* 사용예
// **Namespacing**
// The global footprint is a single object containing
// all other references needed.


var MyApp = {};


MyApp.id = 42;
MyApp.utils = {
    validate: function(){
        //do work
    }
};