Caja 프로젝트

Caja('카하'로 발음')는 구글의 프로젝트이자 오브젝트 캐퍼빌리티 원리에 기반한 가상 iframe의 자바스크립트 구현체이다.
Caja는 자바스크립트(기술적으로 ECMAScript 5 스트릭트 모드 코드), HTML, 종속형 시트 입력을 이용하며 안전한 HTML, CSS 서브셋에 자유 변수 없는 하나의 자바스크립트 함수로 다시 작성한다. 즉, 해당 함수가 오브젝트를 수정할 수 있는 유일한 방식은 호스트 페이지에 의해 오브젝트에 참조가 주어지는 경우이다.
DOM 오브젝트에 직접 참조를 제공하는 대신, 호스트 페이지는 일반적으로 HTML을 새니타이즈(sanitize)하는 래퍼에 대한 참조를 제공하며 페이지 넘겨주기를 방지한다. 이를 통해 Caja가 특정 피싱 공격을 방지하고 사이트 간 스크립팅 공격을 방지하며 악성 소프트웨어 다운로드를 방지하도록 할 수 있다. 재작성된 모든 프로그램이 동일한 프레임 안에서 실행되기 된다.

caja라는 단어는 스페인어로 상자 또는 (은행 등에서의) 안전을 의미하며 이 아이디어는 Caja가 안전하게 자바스크립트 프로그램을 담을 수 있다는 데에서 유래한 것으로, capabilities-based JavaScript로 명시되기도 한다.

Caja는 현재 구글이 구글 사이트와 구글 앱 스크립트 제품에 사용하고 있다. 2008년, 마이스페이스, 야후!, Allianz가 매우 초창기 버전의 Caja를 채용했으나 나중에 이를 제거하였다.

같이 보기 
 Joe-E

각주

외부 링크 
 Caja project home page
 Caja project source code
 Caja playground 
 Caja draft specification: "Safe active content in sanitized JavaScript", Mark S. Miller, Mike Samuel, :en:Ben Laurie, Ihab Awad, Mike Stay
 Yahoo!/Google Caja Javascript Sandbox

구글의 서비스