postMessage() API를 사용하여 다른 도메인의 프레임간에 통신한다고 가정합니다.postMessage 보안의 구멍이 아닌 방법은 무엇입니까?
if (messageEvent.origin !== "http://www.mydomain.com") {
console.log("Message received from unexpected domain!");
return;
}
그러나 누군가가 악의적으로 보내는 프레임의 소스를 설정하는 브라우저에 디버거/관리자를 사용하면 무엇 : 수신 프레임의 표준 보안 검사는 원점과 같은 메시지 이벤트의 속성을 확인하는 것입니다 민감한 데이터를 요청한 메시지를 보내거나 다른 나쁜 일을 한 Javascript가 포함 된 URL입니다. 그런 다음 브라우저의 관리자에서 위의 코드를 편집하여 악성 URL로 검사 할 원본을 변경할 수 없었습니까? 이제 그들은 악성 코드가있는 전송 프레임에서 메시지 이벤트를 시작하고 수신 프레임은 악의적 인 메시지를 기꺼이 받아들입니다. . .
왜 이것이 postMessage의 큰 보안 구멍이 아닙니까?
이 "보안 구멍"을 재생 해 보았습니까? 그렇다면 성공 했습니까? 아니면이 유일한 이론입니까? – jsalonen
크롬을 사용하면 자바 스크립트를 편집 할 수 있지만 수정 된 코드는 무시하고 원래로드 된 코드를 계속 실행하므로 아니요 Chrome에서이 이론상의 보안 구멍을 복제 할 수 없습니다. 그러나 누군가가 자신의 "검은 모자"브라우저를 작성하여 사용자가 페이지에서 실행 된 자바 스크립트를 편집하게 할 수는 없었습니까? 그리고 이것이 문제가 될까요? – mrverdantgreen