2014-06-05 1 views
-1

postMessage() API를 사용하여 다른 도메인의 프레임간에 통신한다고 가정합니다.postMessage 보안의 구멍이 아닌 방법은 무엇입니까?

if (messageEvent.origin !== "http://www.mydomain.com") { 
    console.log("Message received from unexpected domain!"); 
    return; 
} 

그러나 누군가가 악의적으로 보내는 프레임의 소스를 설정하는 브라우저에 디버거/관리자를 사용하면 무엇 : 수신 프레임의 표준 보안 검사는 원점과 같은 메시지 이벤트의 속성을 확인하는 것입니다 민감한 데이터를 요청한 메시지를 보내거나 다른 나쁜 일을 한 Javascript가 포함 된 URL입니다. 그런 다음 브라우저의 관리자에서 위의 코드를 편집하여 악성 URL로 검사 할 원본을 변경할 수 없었습니까? 이제 그들은 악성 코드가있는 전송 프레임에서 메시지 이벤트를 시작하고 수신 프레임은 악의적 인 메시지를 기꺼이 받아들입니다. . .

왜 이것이 postMessage의 큰 보안 구멍이 아닙니까?

+1

이 "보안 구멍"을 재생 해 보았습니까? 그렇다면 성공 했습니까? 아니면이 유일한 이론입니까? – jsalonen

+0

크롬을 사용하면 자바 스크립트를 편집 할 수 있지만 수정 된 코드는 무시하고 원래로드 된 코드를 계속 실행하므로 아니요 Chrome에서이 이론상의 보안 구멍을 복제 할 수 없습니다. 그러나 누군가가 자신의 "검은 모자"브라우저를 작성하여 사용자가 페이지에서 실행 된 자바 스크립트를 편집하게 할 수는 없었습니까? 그리고 이것이 문제가 될까요? – mrverdantgreen

답변

0

왜 이것이 postMessage의 거대한 보안 구멍이 아닙니까?

보안 정책은 알 수없는 도메인과의 통신을 차단하기위한 것입니다. 메시지를 받으면 도메인을 (mydomain.com의 경우 )으로 신뢰합니다.

신뢰할 수있는 도메인이 갑자기 악의적 인 메시지를 보내는 경우 사용자가 고생했습니다. 디자인에 의해.

또한 은 사용자를 절대 신뢰하지 않습니다.. 그리고 그가 (예를 들어 개발자 도구를 사용하여) 표시된 페이지에 부적절한 일을하기로 결정해야한다면, 그것은 자신의 잘못입니다. 그러한 이 다른 사용자에게 영향을 줄 수 없도록해야합니다..

관련 문제