Javascript

자바스크립트 샌드박스(Sandbox)와 BOM(Browser Object Model)

샌드박스의 의미

샌드박스는 아이들이 들어가 놀기 위해서 모래를 채워넣은 상자를 의미합니다. 모래상자 안에서 무엇을 하더라도 상관없지만, 모래상자 바깥으로 나와 집을 어지럽히지는 말라는 부모의 깊은 뜻이 숨겨진 물건이지요.

컴퓨터 보안에서도 샌드박스 환경이라는 단어가 사용됩니다. 이 단어는 실행한 프로그램이 접근할 수 있는 자원들을 제한하는 대신, 제한되지 않은 자원들에 대해서만은 자유롭게 접근하고 조작할 수 있도록 허락한 환경을 의미합니다. 샌드박스는 실행한 프로그램이 자원에 마음대로 접근하여 시스템에 영향을 미치는 심각한 오작동을 일으키거나 시스템을 공격하는 일을 미연에 방지할 수 있게 합니다.

위키피디아에 따르면 이 단어가 처음 사용된 것은 1996년에 발표된 논문 “A Secure Environment for Untrusted Helper Applications”인 것으로 추정됩니다. 프로그램이 접근할 수 있는 모래상자를 만들어 놓고, 바깥으로 나와서 어지럽히지 말고 모래상자 안에 있는 자원만 사용하라는 의미에서 참 위트있게 잘지은 이름입니다.

 

자바스크립트도 샌드박스 환경에서 실행된다.

웹브라우저에서 자바스크립트가 실행될 때도 역시 샌드박스 환경에서 실행됩니다. 이것은 웹브라우저가 웹 페이지를 로딩하는 중에 자바스크립트를 만나면 사용자의 확인없이 바로 스크립트를 실행하기 때문입니다. 가장 대표적인 것이 파일 입출력인데, 자바스크립트 샌드박스 안에는 파일입출력에 대한 어떠한 기능도 포함되어 있지 않습니다. 자바스크립트가 사용자가 모르는 중에 하드디스크에 접근하여 특정 파일을 지우거나 한다면 큰 일이니까요.

대신에 웹브라우저가 제공하는 정보에 대해서는 자유롭게 접근할 수 있습니다. 이 정보들은 window 객체 아래에 위치한 여러 객체들에 나누어서 보관됩니다. 이를테면 해상도 정보는 window.screen 객체에, 모바일 기기에서 GPS로 측정된 현재 위치에 관한 정보는 window.location 객체에 보관되거나 하는 식입니다. 이렇게 window를 포함해 각종 정보들을 저장한 하위 객체들을 모아서 BOM(Browser Object Model)이라고 합니다.

 

요구사항에 대한 구현가능 유무 판단에 유용

때문에 우리가 BOM 아래의 각 객체에 어떤 정보들이 저장되는지를 알고 있으면, 기획팀이나 클라이언트, 상사의 요구사항에 대해 빠르게 구현가능 유무를 판단할 수 있습니다. 물론 그것을 부드러운 말로 전달하는 것은 또다른 문제입니다만, 최소한 불가능한 요구를 받아들이거나 가능한데 불가능하다고 답해서 오해를 사는 일은 줄어들 것입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *