2008-10-27 6 views
3

모질라 파이어 폭스의 XPCSafeJSObject 래퍼가 실제로하는 일은 무엇입니까?XPCSafeJSObjectWrapper의 기능은 무엇입니까?

이 래퍼는 XPCNativeWrapper 몇 가지 문제를 해결하기 위해 만들어졌습니다 다음과 같이

MDC의 설명서입니다. 특히, 일부 확장은 기본으로 구현되지 않은 콘텐트 정의 된 객체에 안전하게 액세스 할 수 있고 강력한 동작 보증없이 XPCNativeWrapper 아래의 기본 JavaScript 객체에 액세스 할 수 있기를 원합니다. XPCSJOW는 크롬 코드 사이의 버퍼 역할을합니다.

이것은 많은 것을 말해주지 않습니다. 특히 XPCSafeObject를 통해 객체에 액세스하는 것이 직접 객체에 액세스하는 방법과 다르다는 것을 알 수는 없습니다.

편집 : 일반적으로 래퍼의 목적은 권한이없는 코드를 권한이없는 코드로부터 보호하는 것입니다. 내가 이해하지 못하는 것 (그리고 문서화 된 것으로 보이지 않는 것)은 입니다. 정확히 XPCSafeJSObject가을 수행합니다.

속성에 액세스하기 전에 권한을 삭제하겠습니까?

+0

어떻게 구현되는지 묻는 제목을 변경하십시오. – Zach

답변

1

일반적으로 래퍼의 목적은 권한이없는 코드와 상호 작용할 때 권한 코드를 보호하는 데 있습니다. 특권이없는 코드의 작성자는 악의적 인 일을하도록 JavaScript 객체를 재정의 할 수 있습니다. 예를 들어 속성 ​​getter를 다시 정의하여 부작용으로 뭔가 나쁜 것을 실행하는 것처럼 말입니다. 권한있는 코드가 속성에 액세스하려고하면 권한이없는 코드로 잘못된 코드가 실행됩니다. 래퍼가 이것을 막습니다. This page은 아이디어를 설명합니다.

XPCSafeJSObject이 아닌 기본적으로 구현 자바 스크립트 객체에 대한 래퍼를 제공 (즉,하지 창, 문서, 등이 있지만, 사용자 정의 객체.)

편집 :이 구현 어떻게, 완전히로드 아니에요합니다 (source code 체크 아웃을 위해 지금 당장 나를 위해.) 기타 관련 소스 파일에 대한 XPCSafeJSObject (DXR)를 검색하십시오.

+0

Zach : 답변 해 주셔서 감사합니다. 그러나 그것은 내가 원했던 것처럼 완전히 질문에 대답하지는 않는다. 질문에 대한 나의 편집을 보라. 또한 링크는 https://developer.mozilla.org/en/Safely_accessing_content_DOM_from_chrome이어야합니다. –

3

래퍼는 평가 된 코드가 크롬 권한없이 평가되도록합니다. 이 래퍼없이 객체에 직접 액세스하면 chrome 권한으로 코드를 실행할 수 있으므로 코드가 아무 것도 할 수 없습니다.

4

사실 XPCSafeJSObjectWrapper는 창과 문서 (실제로 가장 일반적으로 필요한 부분)를 포함하여 모든 콘텐츠 개체에 사용됩니다. XSS 공격이 자동으로 권한 상승 공격으로 전환되는 것을 방지하기 위해 개발 된 것 같습니다 (XSS를 브라우저 자체). 적어도 XSS 공격이 발견되면 (그리고 사람들은 불행히도 계속 찾아 볼 것입니다) 전체 브라우저를 손상시키지 않습니다. 원래 XSS 공격으로부터 브라우저를 보호하기 위해 수동으로 (따라서 확장에 의한 실수로 오용되기 쉬운) XPCNativeWrapper의 자연스러운 개발입니다.