Program Club

iframe에서 IE 11 자사 세션 쿠키가 손실 됨

proclub 2020. 11. 15. 11:58
반응형

iframe에서 IE 11 자사 세션 쿠키가 손실 됨


우리는 iframe에서 수행하는 지불 세부 정보를 확인하기 위해 사용자를 일련의 타사 페이지로 보내는 사이트 (www.example.com)를 가지고 있습니다. 처음에는 www.example.com의 로컬 페이지가 iframe에로드되고 사용자는 타사 URL로 리디렉션됩니다. 사용자가 제 3 자 단계를 완료하면 iframe 내 사이트 (www.example.com)의 페이지로 302 리디렉션됩니다.

이것은 쿠키가 손실 된 것으로 보이는 IE 11을 제외하고 테스트 한 모든 브라우저에서 작동합니다. 데스크톱 및 "메트로"모드에서 Windows 7 및 8.1 모두에서이 문제를 확인했으며 문제는 모든 버전에서 발생합니다.

사용자가 당사 사이트를 탐색 할 때 iframe에 처음로드 된 자사 페이지로 올바르게 전송되는 세션 쿠키를 설정합니다. 그러나 사용자가이 iframe에서 일부 타사 페이지를 통과하면 세션 쿠키가 다음 요청과 함께 전송되지 않습니다.

IE 11의 개인 정보 설정을 가장 낮은 값으로 설정하면이 문제가 사라지고 예상대로 작동합니다.

내가 지금까지 찾은 모든 잠재적 솔루션은 P3P 헤더와 관련이 있습니다. 유효하고 올바른 P3P 헤더와 XML 정책 파일이 설정되어 있으며이 문제는 IE 11에서만 발생합니다.


업데이트 : JS를 사용하여 몇 가지 다른 쿠키를 설정했습니다. 이들은 모두 예상대로 지속됩니다. 차이점은 만료일 (JS 쿠키의 경우 1 년, 세션 쿠키의 경우 1 개월), 도메인 (JS 쿠키의 경우 명시 적으로 "example.com", 세션 쿠키의 경우 비어 있음) 및 "HTTP 전용"여부 (JS의 경우 false)입니다. 쿠키, 세션 쿠키의 경우 참).

세션 쿠키에 대한 JS 쿠키에 따라 이러한 모든 옵션을 설정하려고 시도했지만 아무런 차이가 없었습니다.


업데이트 2 : 추가 테스트 후이 문제를 재현하는 테스트 케이스를 만들 수 없습니다. 라이브 코드에서 테스트를 시도하는 추가 쿠키는 작동하는 JS 쿠키와 정확히 동일한 코드로 설정되어 있어도 깨진 것처럼 보입니다. 간단히 말해서 나는 작동하는 쿠키와 작동하지 않는 쿠키에 대한 패턴을 아직 찾지 못했습니다.

주목할만한 흥미로운 점은 쿠키가 삭제되지 않고 최종 요청으로 전송되지 않는다는 것입니다. 다른 페이지가로드되면 쿠키가 마술처럼 다시 나타나서 전송됩니다. 이것이 iframe과 P3P를 둘러싼 버그라고 믿게 만듭니다.


업데이트 3 (3 일차) : IE 11의 쿠키 처리가 계속해서 나를 혼란스럽게합니다. 마이크로 소프트의 미궁으로 멀어 질수록 변화하는 벽 사이에서 더 많은 길을 잃게됩니다. 그리고 여기에 유령이 있습니다. 반쯤 꿈꾸던 보안 정책의 일부로, 모든 움직임에서 나를 추적하고 조롱하는 천상의 생명체로 엮여 있습니다. 처음에 나는 얼어 붙고 겁에 질려 겨우 알아볼 수없는 형태에 깜짝 놀랐지 만 지나가는 시간마다 그 근접성에 대한 단순한 지식으로부터 더 많은 위로를 얻습니다. 이것이 제가 여기로 보내진 바로 그 짐승일까요? 그런 시간에 어떻게 내 유일한 동반자를 죽일 수 있습니까?


https를 통한 리디렉션 후 세션 쿠키가 누락 된 Internet Explorer 11에서 유사한 문제가 발생했습니다.

요청 체인은 다음과 같습니다.

/ 초기 요청 > - 세션 쿠키 설정 -> 외부 URL로 리디렉션 -> 리디렉션 다시 (세션 쿠키 손실)

우리의 문제는 RFC952 에 따른 유효하지 않은 호스트 이름 때문이었습니다 . 테스트 서버 URL에 밑줄이있었습니다. URL이 RFC952를 준수하지 않으면 Internet Explorer가 https를 통한 리디렉션에서 세션 쿠키를 자동으로 삭제하는 것 같습니다. 밑줄 대신 대시를 사용하면 모든 것이 예상대로 작동했습니다.

원래 솔루션은 2004 년 의이 asp.net 블로그 게시물업데이트 2 섹션 에서 찾을 수 있습니다. 여기에 관련 Microsoft 버그 티켓이 있습니다.

바라건대 이것은 누군가를 도울 것입니다.


IE7 호환 모드가 새 페이지에 적용될 때 세션 쿠키가 종종 손실되는 것을 발견했습니다. iframe에도 동일하게 적용될 수 있다고 생각합니다. iframe이 상위 페이지와 다른 또는 이전 세션과 다른 X-UA-Compatible 헤더 값을 전송합니까? 세션이 IE = edge로 시작되었고 iframe 페이지가이를 IE = 7로 설정했을 수 있습니다. 그렇다면 IE는 호환성 모드 페이지 및 세션 쿠키에 대해 새 IE PID를 자주 사용하는 것 같습니다 (하지만 전송되지 않는 것 같습니다.


이 주제에서 언급 된 것과 동일한 문제가 있습니다.

우리 사이트는 iframe에 배치되고 session to cookie (asp.net_session)를 사용합니다. 사이트 탐색 중에는 문제가 없습니다 (쿠키가 작동하고 요청 헤더에 첨부 됨). 그러나 고객을 다른 웹 사이트 (othersite.com)로 리디렉션 한 다음 othersite.com에서 고객을 당사 도메인으로 리디렉션하고 "_top"으로 강제로 열면 브라우저가 요청과 함께 쿠키를 보내지 않아 고객 세션이 손실됩니다. 이 문제는 IE에서만 발생했습니다.

이 문제를 해결하기 위해 무엇을 조언 할 수 있습니까?


IE11에서 인터넷 옵션을 확인하십시오. 도구> 인터넷 옵션> 개인 정보> 고급

이를 무시하고 "항상 세션 쿠키 허용"을 활성화해야합니다.

참고 URL : https://stackoverflow.com/questions/24384819/ie-11-first-party-session-cookies-being-lost-in-iframe

반응형