2016-11-29 4 views
0

지금까지 웹 서버는 항상 X-Frame-Options "sameorigin" 헤더를 설정했으며 아무런 문제가 없었습니다. 그러나 이제는 다른 서버에서 iframe을 사용해야했지만 놀랍게도 allow-from은 Chrome 및 Safari에서 사용되지 않으므로 X-Frame-Options을 사용할 수 없습니다.콘텐츠 보안 정책 프레임 상위 항목의 범위 이해

그래서 헤더를 CSP로 전환하고 있지만 몇 가지 문제가 있습니다.

두 개의 서버, XA (192.168.1.1) 및 XB (192.168.1.2)를 가정하십시오. XA는 일부 차트가있는 페이지를 제공하고 XB는 해당 차트 중 하나에 iframe이있는 페이지를 제공합니다.

XA에서 나는 다음 헤더를 사용합니다 : Header set Content-Security-Policy "frame-ancestors 'self' 192.168.1.1". 그러나 XB 사이트를 방문하면 iframe의 콘텐츠가 CSP 정책을 위반하기 때문에로드되지 않습니다.

그래서, 두 가지 질문이 있습니다 방향이 정책 작업을 수행

1) 어떤 년을 ?? XA -> XB 또는 XA < - XB? 즉, 192.168.1.1이 맞습니까, 아니면 대신 192.168.1.2를 사용해야합니까? 둘 다 시도하고 작동하지 않았지만, 바로 옳은 것을 알기 위해서.

2) 정책 위반 오류가 발생하는 이유는 무엇입니까?

테스트 목적으로 XA와 XB 모두 단순한 HTML 만 제공합니다.

XA

<html> 
<body> 
    lalala 
</body> 
</html> 

XB 내가 XB 방문

<html> 
<body> 
    <iframe src="http://192.168.1.1"/> 
</body> 
</html> 

브라우저의 콘솔 오류 : Refused to display 'http://192.168.1.1/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' http://192.168.1.1".

답변

0

신경 끄시는 ... 단지 문제를 일으키는 무엇을 발견했다.

1) 정책은 192.168.1.2를 가리켜 야합니다.

약 2) XB가 내 랩톱이기 때문에 작동하지 않았습니다. 브라우저를 localhost로 지정했습니다. Apache를 127.0.0.1 대신 192.168.1.2에서 실행하도록 변경 한 후 작동했습니다.

관련 문제