2014-03-29 4 views
2

행 아웃 앱에서 window.indexedDB에 액세스 할 때 몇 가지 문제가 있습니다. 나는 보안 문제 때문에 그것을 추측하고있다. indexedDB는 iframe에 있습니까? 또한 window.top.indexedDB에 액세스 할 수있는 권한이 없습니다. 한 행 아웃에서 다른 행 아웃으로 이어질 영구 저장소를 사용할 수 있습니까? 동일한 수다방 세션 내의 디스크 (RAM 부족) 스토리지는 어떨까요?Google 행 아웃에서 indexedDB를 사용할 수 있습니까?

+0

localStorage를 사용해 보셨습니까? 또한 일부 코드와 일부 오류를 게시하면 다른 사람들이 도움을 줄 수 있습니다. – Paul

+0

우리는 더 많은 정보를 사용할 수 있습니다. 코드 샘플이 가장 좋을 것입니다. 그러나 나는 당신이 말한 것에 근거하여 당신의 이슈를 추측 할 수 있습니다. 그것은 당신이 도메인 전체의 IDB에 관한 정보를 찾고 있음을 나에게 암시합니다. 제공된 정보를 바탕으로 최선의 답변을 제공했습니다. – buley

+0

Google 핸드 아웃 프레임에서 데이터를 가져올 수 있다면 보안 버그 현상이 발생할 수 있습니다. –

답변

0

iframe에 indexedDB가 있습니까?

아니요. IndexedDB는 DOM에서 API로 공개됩니다. 접두사가 없으면 window.indexedDB에서 찾을 수 있습니다.

틀 안에서도 확실히 사용할 수 있습니다. iFrame에서 IDB를 사용하면 same-origin policy에 따라 프레임 된 콘텐츠의 호스트 이름에 데이터가 저장됩니다. 본질적으로 이는 동일한 도메인의 데이터에는 액세스 할 수 있지만 도메인에는 액세스 할 수 없음을 의미합니다. 같은 출처의 문맥에서 "같은 도메인"이란 도메인, 프로토콜 및 포트의 일치하는 튜플을 의미합니다.

Google 행 아웃 구현시 상위/하위 문제가 발생하는 경우 프레임의 호스트 이름을 확인하고 상위 도메인과 비교합니다. Chrome에서 dev 도구를 실행하고 <top frame> 대신 iframe을 선택하고 위치 값이 일치하는지 확인하면됩니다. 이 같은

enter image description here

뭔가 트릭을 수행해야합니다

console.log([window.location.protocol, '//', window.location.hostname, window.location.port ? ':' + window.location.port : ''].join('')); 

당신이 도메인 프로토콜이나 포트에서 이야기해야하는 경우

iframe postMessage() 인터페이스를 사용한다.