2010-06-07 5 views
6

개발자가 자바 스크립트로 사이트 용 커스텀 앱을 작성하고 싶지만 샌드 박스에 넣어서 사용자 리디렉션과 같은 장난 꾸러기를하지 못하게하고, 본체 표시를 없음 등으로 설정합니다. 그것은이 문제를 해결 얻을 어떤 다른 방법이 할 수있는하는자바 스크립트 샌드 박스

with(Namespace) { 
    //App code goes here where they can only access Namespace.* 
} 

얼마나 쉽게입니다 : 나는 샌드 박스를 만들 생각 있도록 모든 기능들이 이제까지 거기에 존재해야합니다 자바 스크립트의 네임 스페이스는 문제의 것 끝내라? 모든 제출 된 앱을 검토하지 않아도됩니다.

답변

1

샌드 박스를 실행하려면 코드가 실행되기 전에 코드를 검사하고 합법적이지 않은 코드를 캡처해야합니다. 발견 된 코드는 실행되지 않습니다. 매우 지루하고 오류가 많은 경향이 있습니다.

페이스 북은 적어도 초기 플랫폼에서 이것을했는데, 나는 개발자로서 분명히 그것을 즐기지 않았다. 그들은 사용할 수있는 원시 메소드를 제한하고 일부는 제한된 래퍼를 제공했습니다.

+0

실제로 코드 검사기를 작성하는 것은 불가능합니다. 중지 문제를 해결할 수 있기 때문입니다.) ('s 이상한 방법으로'window [s]()'호출) – mik01aj

2

가장 먼저 떠오르는 것은 eval입니다. 그들은이를 사용하여 래퍼 샌드 박스 외부에서 사용자 정의 코드를 실행할 수 있습니다. 결정된 개발자가 코드를 래핑하여 중지하는 것은 매우 어려울 것입니다.

Link에 eval을 사용하십시오.

+1

Google Caja와 ADSafe는 'eval'을 제한 할 수 있습니다 :-) – CMS

8

음, 순간 샌드 박스 코드에 대한 옵션은 다음과 같습니다

모두 당신이 안전한 환경을 만들 수있는 곳 전역 객체에 대한 액세스 DOM이 제한됩니다.

위 프로젝트의 주요 목적은 귀하가 제 3 자의 위젯과 웹 컨텐츠를 안전하게 포함 할 수있게하는 것입니다.

+0

'Object.prototype'도 수정하지 못하나요? – mik01aj