Internet Explorer에서 쿠키가 차단되거나 IFRAME에 저장되지 않음


392

나는 두 개의 웹 사이트를 가지고의 그들이있어 가정 해 봅시다 example.comanotherexample.net. 에 anotherexample.net/page.html, 나는이 IFRAME SRC="http://example.com/someform.asp". IFRAME은 사용자가 작성하여 제출할 양식을 표시합니다 http://example.com/process.asp. someform.asp자체 브라우저 창에서 양식 ( " ")을 열면 모든 것이 잘 작동합니다. 그러나 IE 6 또는 IE 7에서 IFRAME으로 로드 someform.asp하면 example.com의 쿠키가 저장되지 않습니다. Firefox에서는이 문제가 나타나지 않습니다.

테스트 목적으로 http://newmoon.wz.cz/test/page.php 에서 비슷한 설정을 만들었습니다 .

example.com쿠키 기반 세션을 사용하므로 쿠키를 사용하지 process.asp않으면 실행할 수 없습니다. IE가 쿠키를 저장하도록하려면 어떻게해야합니까?

HTTP 트래픽 스니핑 결과 : GET /someform.asp 응답에 유효한 세션 별 Set-Cookie 헤더 (예 Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY:)가 있지만 POST /process.asp 요청에는 쿠키 헤더가 전혀 없습니다.

Edit3 : 일부 AJAX + 서버 측 스크립팅은 분명히 문제를 피할 수는 있지만 버그와 매우 유사하며 완전히 새로운 보안 취약점을 열어 줍니다. 내 응용 프로그램이 쉬운 이유만으로 버그 + 보안 허문 조합을 사용하고 싶지 않습니다.

편집 : P3P 정책은 근본 원인 이며 아래에 전체 설명이 있습니다.


실제로 좋은 해결책 .. 나는 개인 정보 보호 정책을 만들려고했습니다. 컨텍스트 컨텍스트에 추가되었습니다 ... 그리고 jsp 페이지에서 헤더를 설정하고 있습니다 .... 여전히 그 적목 현상을 제거 할 수 없습니다. 나 문제를 해결 ..
user902490

데모 사이트 @Piskvor 주셔서 감사합니다, 나는 그것을 참조하는 이 Security.SE 게시물에 여기에 대화 형 브라우저 테스트와 목록 웹 사이트
goodguys_activate

@ makerofthings7 : YW. 나는 그것을 임시가 아닌 (sic!) 사이트로 옮기고 Security.se에 대한 편집을 제안 할 것입니다. 그 페이지는 다소 해킹 된 개념 증명이었습니다.
Piskvor

2
Windows 10 / Internet Explorer 11 ( msdn.microsoft.com/en-us/library/… ) 에서 P3P를 실행하려고하지 않아도 됩니다. P3P는 전혀 작동하지 않으므로 사용자가 무엇을하든 쿠키는 저장되지 않습니다. 뿐만 아니라 여기에 enhanceie.com/test/cookie
puco

답변:


429

나는 그것이 효과가 있었지만 해결책은 약간 복잡하므로 나와 함께 견뎌야한다.

무슨 일이야

Internet Explorer는 IFRAME 페이지에 대한 신뢰 수준을 낮 춥니 다 (IE는이 "타사"컨텐츠를 호출합니다). IFRAME 내부의 페이지에 개인 정보 보호 정책이없는 경우 쿠키가 차단됩니다 (클릭하면 상태 표시 줄에 눈 아이콘으로 표시됨). 차단 된 URL 목록이 표시됩니다.

사악한 눈
(출처 : piskvor.org )

이 경우 쿠키가 차단되면 세션 식별자가 전송되지 않고 대상 스크립트에서 '세션을 찾을 수 없음'오류가 발생합니다.

(세션 식별자를 양식으로 설정하고 POST 변수에서로드하려고 시도했습니다. 이것은 효과 가 있었지만 정치적 이유로는 그렇게 할 수 없었습니다.)

IFRAME 내부의 페이지를보다 신뢰할 수있게 만들 수 있습니다. 내부 페이지가 IE에 허용되는 개인 정보 보호 정책으로 P3P 헤더를 보내면 쿠키가 허용 됩니다.

그것을 해결하는 방법

p3p 정책 만들기

좋은 출발점은 W3C 튜토리얼 입니다. 이를 통해 IBM 개인 정보 보호 정책 편집기를 다운로드 한 후 개인 정보 보호 정책 의 표현을 작성하고이를 참조 할 이름을 지정했습니다 (여기서는 policy1).

참고 :이 시점에서 실제로 사이트에 개인 정보 보호 정책이 있는지 확인하고 그렇지 않은 경우 사이트를 생성해야합니다. 사용자 데이터 수집 여부, 데이터 종류, 사이트 기능, 액세스 권한, 이 정보를 찾아서 생각 해야합니다. 몇 개의 태그를 함께 두드리면 잘리지 않습니다. 이 단계는 소프트웨어로만 수행 할 수 없으며 매우 정치적 일 수 있습니다 (예 : "클릭 통계를 판매해야합니까?").

(예 : "사이트는 ACME Ltd.에서 운영하며 운영에 익명 세션 당 식별자를 사용하고 명시 적으로 허용 된 경우에만 사용자 데이터를 수집하며 다음 목적을 위해서만 데이터를 필요한 경우에만 당사 회사 만 저장합니다. 등에 액세스 할 수 있습니다. ").

이 도구를 사용하여 편집 할 때 정책에서 오류 / 생략을 볼 수 있습니다. "HTML 정책"탭도 매우 유용합니다. 맨 아래에는 "정책 평가"가 있습니다. 정책이 차단되는지 빠르게 확인합니다. IE의 기본 설정에 따라)

Editor는 위 정책의 XML 표현 인 .p3p 파일로 내 보냅니다. 또한이 정책의 "컴팩트 버전"을 내보낼 수 있습니다.

정책에 연결

그런 다음 정책 참조 파일 ( http://example.com/w3c/p3p.xml)이 필요했습니다 (사이트에서 사용하는 개인 정보 보호 정책 색인).

<META>
  <POLICY-REFERENCES>
    <POLICY-REF about="/w3c/example-com.p3p#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
</META>

<INCLUDE>쇼 (내 경우 전체 사이트)이 정책을 사용하는 모든 URI를. 에디터에서 내 보낸 정책 파일이http://example.com/w3c/example-com.p3p

응답이있는 컴팩트 헤더를 보냅니다.

example.com에서 웹 서버를 설정하여 다음과 같이 응답과 함께 컴팩트 헤더를 보냅니다.

HTTP/1.1 200 OK 
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content

policyref는 정책 참조 파일에 대한 상대 URI이며 (이는 개인 정보 보호 정책을 참조 함) CP간단한 정책 표현입니다. 예제에서 P3P 헤더 조합은 특정 웹 사이트에 적용되지 않을 수 있습니다. P3P 헤더는 반드시 귀하의 개인 정보 보호 정책을 진실로 나타내야합니다!

이익!

이 구성에서는 Evil Eye가 나타나지 않고 IFRAME에도 쿠키가 저장되며 응용 프로그램이 작동합니다.

편집 : 소송에서 방어하는 것을 좋아하지 않는 한하지 말아야 할 것

몇몇 사람들은 "사악한 눈이 내릴 때까지 일부 태그를 P3P 헤더에 넣는 것"을 제안했습니다.

태그는 여러 비트 일뿐만 아니라 실제 의미를 지니고 있으며 그 사용은 실제 책임을 제공합니다 !

예를 들어, 사용자 데이터를 수집하지 않는 척하면 브라우저가 만족 스럽지만 실제로 사용자 데이터를 수집하는 경우 P3P는 실제와 충돌합니다. 간결하고 단순하게, 의도적으로 사용자에게 거짓말을 하고 있으며 이는 일부 국가에서 범죄 행위 일 수 있습니다. "감옥에 가서 200 달러를 모으지 마십시오".

몇 가지 예 ( 전체 태그 세트는 p3pwriter 참조 ) :

  • NOI : "웹 사이트는 식별 된 데이터를 수집하지 않습니다." (맞춤 설정, 로그인 또는 데이터 수집 (***** Analytics, 누구나?)이있는 즉시 P3P에서 확인 해야합니다. )
  • STP : 명시된 목적에 맞게 정보가 유지됩니다. 이를 위해서는 가능한 빨리 정보를 폐기해야합니다. 사이트에는 폐기 시간 테이블을 설정하는 보존 정책이 있어야합니다. 보존 정책은 반드시 사이트의 사람이 읽을 수있는 개인 정보 보호 정책에 포함되거나 연결되어야합니다. "(따라서 STP보존 정책이없는 경우 사기를 저지른 것일 수 있습니다. 얼마나 멋진가요?

나는 변호사가 아니지만 P3P 헤더가 실제로 법적 구속력이 있는지 또는 실제로 약속을 지키지 않고 사용자에게 약속 할 수 있는지 알아보기 위해 법원에 가지 않을 것입니다.


나는 95 % 완료되었지만 내 헤더는 P3P : CP = "...."라고 말했고 policyref 링크를 포함하지 않아 IE7에서는 작동하지만 IE6에서는 작동하지 않습니다 ... 지금은 잘 작동합니다. 감사!
AndreasKnudsen

4
IBM 편집기에 대한 링크가 더 이상 작동하지 않습니다. Wayback Machine을 통해이 작업 링크를 찾을 수있었습니다 : www6.software.ibm.com/sdfdl/1v2/regs2/awadmin/p3peditor/Xa.2/…
ripper234

34
이 주제에 대한 일부 뉴스 : -IBM 편집기는 softpedia.com/get/Security/Security-Related/… 에서 찾을 수 있습니다. -P3P 표준은 '죽은'것 같습니다. 구글과 페이스 북과 같은 대기업들은 이제 IE 보안을 우회하기 위해 잘못된 P3P 헤더를 사용합니다. 이 게시물을 참조하십시오 cylab.cmu.edu/research/techreports/2010/tr_cylab10014.html zdnet.com/blog/facebook/... techpolicy.com/...
다비드 Icardi

7
도메인이 다른 보안 영역에있는 경우 (예 : 자사는 인터넷이고 타사는 인트라넷 인 경우) 내 테스트에서 P3P가 올 바르면 타사 쿠키를 수락 할 수 없습니다. 구성되었습니다. 쿠키는 항상 차단됩니다.
Davide Icardi

1
'타사'라는 용어는 생각만큼 명확하지 않다는 점에 유의해야합니다. iframe에 둘러싼 사이트와 관련된 타사 콘텐츠가 있고 유효한 개인 정보 보호 정책이 있고 기본 사이트에서 제공되는 iframe의보기로 리디렉션되는 경우 해당보기에 유효한 개인 정보 보호 정책이 없으면 IE는 쿠키를 신뢰하십시오. 해당 뷰가 iframe을 포함하는 사이트와 동일한 사이트에서 온 경우에도 마찬가지입니다.
요금 :

168

나는이 P3P 일을 조사하면서 하루의 많은 시간을 보냈고, 내가 찾은 것을 공유 할 필요성을 느낀다.

P3P 개념은 매우 구식이며 Internet Explorer (IE)에서만 실제로 사용 / 강제하는 것 같습니다.

가장 간단한 설명은 다음과 같습니다. IE는 쿠키를 사용하는 경우 P3P 헤더를 정의하려고합니다.

이것은 좋은 생각이며 운 좋게도이 헤더를 제공하지 않으면 문제가 발생하지 않습니다 (브라우저 경고 읽기). 귀하의 웹 사이트 / 웹 애플리케이션이 (i) 프레임을 사용하여 다른 웹 사이트에로드되지 않는 한. 이것은 IE가 ***에서 큰 고통이되는 곳입니다. P3P 헤더가 설정되어 있지 않으면 쿠키를 설정할 수 없습니다.

이것을 알고 다음 두 가지 질문에 대한 답을 찾고 싶었습니다.

  1. 무슨 상관이야? 다시 말해, 헤더에 "Potato"라는 단어를 넣으면 고소 될 수 있습니까?
  2. 다른 회사는 무엇을합니까?

나의 발견은 :

  1. 아무도 신경 쓰지 않는다. 이 기술에 법적 가중치가 있음을 나타내는 단일 문서를 찾을 수 없습니다. 연구하는 동안 P3P 헤더에 "Potato"라는 단어를 넣지 못하게하는 법을 채택한 전 세계 단일 국가를 찾지 못했습니다.
  2. Google과 Facebook은 P3P 헤더가없는 이유를 설명하는 페이지를 참조하는 링크를 P3P 헤더 필드에 넣었습니다.

이 개념은 2002 년에 태어 났으며,이 구식이고 법적으로 구현되지 않은이 개념은 여전히 ​​IE 내의 개발자들에게 강요되어 있습니다. 이 헤더에 법적 영향이없는 경우이 헤더를 무시해야합니다 (또는 콘솔에서 경고 또는 알림 생성). 시행되지 않습니다! 나는 절대로 아무것도하지 않는 코드에 줄을 넣고 클라이언트에게 헤더를 보내야합니다.

간단히 말해서-IE를 행복하게 유지하려면-PHP 코드에 다음 줄을 추가하십시오 (다른 언어는 비슷하게 보입니다)

header('P3P: CP="Potato"');

문제는 해결되었고 IE는이 감자에 만족합니다.


6
실제로이 문제가 게시 된 2008 년 이후로 문제가 크게 변경되었습니다. 웹은 계속 발전했으며 P3P에 대한 합의는 "더 이상 신경 쓰지 않는다"는 결론에 이르렀습니다. 이 경우 IE가 유효하지 않은 입력으로 무엇을하는지 알고 싶습니다.
Piskvor 건물 왼쪽

19
오 이런, 이것은 숨겨진 인터넷 익스플로러 보석 중 하나입니다! HttpContext.Current.Response.AddHeader ( "p3p", "CP = \"Internet Explorer가 바보에 의해 프로그램되었습니다 \ ""); 그게 나를 위해 일한다!
Michiel Cornille

6
@Mvision 개발자를 비난하지 마십시오. 이것은 변호사 및 관리와 관련된 문제입니까? 나는 대부분의 개발자가 그 기능이 감자 와 같은 솔루션을 만들 것이라는 것을 깨달았다 고 생각한다. :-)
KajMagnus

5
ASP.Net의 경우 웹 구성에 다음을 추가 할 수 있습니다. 타사 쿠키 설정 "" /> </ customHeaders> </ httpProtocol> </ handlers> </system.webServer> '
Rick Kierner

1
아이게 더 높아야 해요! IE 11 iframe에서 쿠키를 작동시키는 데 몇 시간을 보냈습니다. 모든 종류의 P3P 조합을 시도하고 쿠키 유형 / 만료에 따라 다양한 결과를 얻습니다. 마침내 Potato내 P3P를 넣어서 해결했습니다. ㅋ!
dtbaker

55

IFrame (PHP 솔루션)의 사이트에이 작은 헤더를 추가하여 악의적 인 시선을 사로 잡을 수있었습니다.

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

Ctrl + F5를 눌러 사이트를 다시로드해야합니다. 그렇지 않으면 탐색기가 제대로 작동하더라도 악의적 인 눈이 보일 수 있습니다. 이것이 아마도 작동하는데 많은 문제가 있었던 주된 이유 일 것입니다.

정책 파일이 전혀 필요하지 않았습니다.

편집 : IFrames의 쿠키 문제를 설명하는 멋진 블로그 항목을 찾았습니다. 또한 C # 코드에서 프레임, ASPX 페이지 및 거부 된 쿠키에 대한 빠른 수정 사항이 있습니다.


10
IANAL이지만 P3P 정책은 법적 구속력이있는 것으로 보입니다. 여기서 사용자에게 약속 한 것을 알고 있습니까 , 아니면 EvilEye가 사라질 때까지 태그를 혼합 했습니까? 브라우저 캐싱은 다음과 같은 가장 큰 문제는 아니라고 생각합니다. " NOI : 웹 사이트는 식별 된 데이터를 수집하지 않습니다. STP : 명시된 목적에 맞게 정보가 유지됩니다. 가능한 빨리 정보를 폐기해야합니다. 삭제 시간표를 설정하는 보존 정책이 있습니다. 보존 정책은 사이트의 사람이 읽을 수있는 개인 정보 보호 정책에 포함되거나 연결되어야합니다. "
Piskvor

28
나는 그것이 의미하는 바에 정말로 신경 쓰지 않는다는 것을 인정해야합니다. 탐색기에서 일할 물건이 필요했습니다. 이 사이트는 쿠키를 사용하여 사이트를 표시 할 스타일을 '기억'하는 사이트입니다. 따라서 예, 저는 사악한 눈이 사라질 때까지 태그를 혼합했습니다.
Helo


6
P3P의 관련성이 증가합니다. cylab.cmu.edu/files/pdfs/tech_reports/CMUCyLab10014.pdf 법적 구속력이있는 법적 구속력이 있다면,이를 입증함으로써 소송 우선권이 있습니다. 내 경쟁사 중 하나를 제외한 모든 경쟁자가 처음에 하나를 게시하는 것을 귀찮게하는 것은 매우 높은 평가로 간주됩니다. 고객이 IE 설정을 보통으로 둘 수 없다면 노력할 가치가 없다는 것을 알아야합니다. 쿠키가 작동하지 않으면 한 사이트에서 잃어버린 판매량은 꽤 높아야합니다.
Fiasco Labs

3
이 답변 은와 같은 더미 헤더를 사용하는 것이 좋습니다 CP="This_is_not_a_privacy_policy". 덜 법적으로 구속력이있는 것처럼 보이기 때문에 (예 : NOI 및 STP 및 그와 같은 것은 언급되지
않았기

21

이것은 다른 답변의 의견에 묻혀 있지만 거의 놓쳤으므로 자체 답변이 필요한 것처럼 보입니다.

검토하려면 : IE가 타사 쿠키를 허용하려면 다음 형식의 p3p라는 http 헤더를 사용하여 파일을 제공해야합니다.

CP="my compact p3p policy"

그러나 p3p는 현재 표준으로 거의 죽었으므로 실제 p3p 정책을 만드는 데 시간과 법적 자원을 투자하지 않고도 IE가 쉽게 작동하도록 할 수 있습니다. 컴팩트 p3p 정책 헤더가 유효하지 않은 경우 IE는 실제로이를 양호한 정책으로 취급하고 타사 쿠키를 허용하기 때문입니다. 따라서 다음과 같은 p3p 헤더를 사용할 수 있습니다

CP="This site does not have a p3p policy."

Google 및 Facebook과 마찬가지로 p3p 정책이없는 이유를 설명하는 페이지 링크를 선택적으로 포함 할 수 있습니다 ( https://support.google.com/accounts/answer/151657 및 여기 : https). http://www.facebook.com/help/327993273962160/ ).

마지막으로, 타사 사이트에서 제공되는 모든 파일에는 쿠키를 설정하는 것이 아니라 p3p 헤더가 있어야하므로 PHP, asp.net 등에서이 작업을 수행하지 못할 수도 있습니다. 암호. 웹 서버 수준 (IIS 또는 Apache)에서 설정하는 것이 좋습니다.


20

이 문제도 있었으며 MVC2 프로젝트에서 사용한 코드를 게시한다고 생각했습니다. 페이지 수명주기에서 헤더에 추가하거나 HttpException " HTTP 헤더가 전송 된 후 서버가 헤더를 추가 할 수 없습니다 "가 표시 될 때주의하십시오 . OnActionExecuting 메서드에서 사용자 지정 ActionFilterAttribute를 사용했습니다 (작업이 실행되기 전에 호출 됨).

/// <summary>
/// Privacy Preferences Project (P3P) serve a compact policy (a "p3p" HTTP header) for all requests
/// P3P provides a standard way for Web sites to communicate about their practices around the collection, 
/// use, and distribution of personal information. It's a machine-readable privacy policy that can be 
/// automatically fetched and viewed by users, and it can be tailored to fit your company's specific policies.
/// </summary>
/// <remarks>
/// More info http://www.oreillynet.com/lpt/a/1554
/// </remarks>
public class P3PAttribute : ActionFilterAttribute
{
    /// <summary>
    /// On Action Executing add a compact policy "p3p" HTTP header
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

        base.OnActionExecuting(filterContext);
    }
}

사용 예 :

[P3P]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

14

이것은 문제에 대한 훌륭한 주제이지만 여기 또는 다른 곳에 게시되지 않은 중요한 세부 사항 (적어도 필자는 필 요한 경우)이 P3P 라인이 있어야한다는 것을 알았습니다. Javascript 파일 또는 이미지와 같은 쿠키를 설정하거나 사용하지 않는 파일까지도 타사 서버에서 전송 된 모든 파일의 헤더로 전달됩니다 . 그렇지 않으면 쿠키가 차단됩니다. 나는 여기에 게시물에 이것을 더 가지고 있습니다 : http://posheika.net/?p=110


5

node.js 에서이 문제가있는 사람.

그런 다음이 p3p 모듈을 추가하고 미들웨어에서이 모듈을 사용하십시오.

npm install p3p

Express를 사용하고 있으므로 app.js에 추가합니다.

먼저 app.js에서 해당 모듈이 필요합니다.

var express = require('express');
var app = express();
var p3p = require('p3p');

그런 다음 미들웨어로 사용하십시오.

app.use(p3p(p3p.recommended));

res 객체에 p3p 헤더를 추가합니다. 추가 작업이 필요 없습니다.

당신은 더 많은 정보를 얻을 것이다 :

https://github.com/troygoode/node-p3p


5

누구든지 아파치 라인을 찾고 있다면; 우리는 이것을 사용했습니다.

헤더 세트 P3P "CP = \"감사합니다. IE8 \ ""

P3P 헤더가있는 한 CP 값을 무엇으로 설정했는지는 중요하지 않습니다.


4

가능한 한 가지 방법은 도구-> 인터넷 옵션-> 개인 정보-> 사이트 : somedomain.com-> 허용-> 확인에서 허용 된 사이트에 도메인을 추가하는 것입니다.


23
예, 컴퓨터에서만 작동한다면 모든 방문객에게 이것을 제안하는 것이 실용적이지는 않습니다.
Piskvor

3

이 게시물 에서는 P3P에 대한 설명과 IE7 및 IE8의 문제를 줄이는 바로 가기 솔루션을 제공합니다.


1
"기본적으로"우리는 귀하의 개인 데이터를 수집하지 않습니다 "라고 말하고 있습니다." 나는 그 정책에 설정된 토큰을 실제로 충족시키는 사이트가 전혀 없다는 것을 보았습니다 ( 익명 통계 데이터조차도 아니고 서버 액세스 로그조차도 전혀 수집 하지 않습니다). 제공되는 다른 정책도 달성하기가 매우 어렵습니다 (웹 분석이 있습니까? Bam, P3P 정책을 위반했습니다). 따라서이 기사는 "누군가는 아무리 신경 쓰지 않는다"고 요약 될 수 있습니다. 실제로 전체 인터넷에서 가장 유용한 기사 .
Piskvor가 건물을 떠났습니다.

이 기사의 다른 부분을 인용하자면, "인터넷에는 P3P, 컴팩트 정책 및 IE7의 요구 사항에 대한 훌륭한 무료 정보가 거의 없으며 IE7은 쿠키가 차단 된 이유와 같은 유용한 디버깅 출력을 전혀 제공하지 않습니다." 이것은 완전히 사실 인 것 같습니다! IE7 / 8이 다른 모든 브라우저와 다르게 작동하는 이유를 찾으려고 하루 종일 보냈지만이 게시물을 찾는 것은 매우 기뻤습니다. 아마도 P3P가 죽은 사양이며 대부분의 사람들이 그 문제를 해결하기를 원할 것입니다. 이 게시물은 아마도 주제에서 가장 유용한 것입니다.
Henrik Aasted Sørensen

"인터넷에는 놀랍게도 좋은 무료 정보가 거의 없습니다"-2007 년에 작성된 것일 수도 있지만 (작성 당시) 인터넷에는 많은 정보가 있으며 현재 P3P 정책을 구축하는 데 도움이되는 무료 도구도 있습니다 P3P를 변호하지는 않지만 "이 문제를 해결하고 사라지게하십시오"라고 말하면 사이트에 대해 명백한 주장을 할 때 값 비싼 결과를 초래할 수 있습니다. 아직 테스트를받지 않았지만 (IIRC), 저는 그 소송을 받고 싶지 않습니다.
Piskvor 건물 왼쪽

1
@Piskvor-무료 P3P 도구를 게시하십시오. 내가 가려고하는 모든 것은 링크 농장과 가짜 검색에 의해 구입되었습니다. IBM은 무료 툴을 사용했습니다. P3P 지원은 2012 년 가뭄에 잔디 죽어처럼 보인다
큰 실수 연구소를

2
: Softpedia에에 여기에 IBM 알파 웍스 P3P 편집기를 찾을 수 softpedia.com/get/Security/Security-Related/...
큰 실수 연구소

3

여기서 언급하지 않은 한 가지 솔루션 은 쿠키 대신 세션 저장소를 사용하는 것입니다. 물론 이것은 모든 사람의 요구 사항에 맞지 않을 수도 있지만 경우에 따라 쉽게 해결할 수 있습니다.


1
좋은 지적. 이 질문이 게시 될 당시, 특히 IE에서는 세션 저장소에 대한 지원이 없었습니다. 그러나 시대는 변하고;)
Piskvor는 건물을 떠나

3

Azure Access Control Services를 통한 로그인과 관련 하여이 문제를 조사하고 있었고 머리와 꼬리를 연결할 수 없었습니다.

그런 다음이 게시물을 우연히 발견했습니다 https://blogs.msdn.microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

즉, IE는 영역 간 (예 : 인터넷과 신뢰할 수있는 사이트) 쿠키를 공유하지 않습니다.

따라서 IFrame 대상과 html 페이지가 다른 영역에 있으면 P3P가 도움이되지 않습니다.


나는이 여전히 : 2016에 관련이 놀랍군요
Piskvor 건물 왼쪽

1
IE의 P3P 상태는 여기에 문서화되어 있습니다. msdn.microsoft.com/en-us/library/mt146424(v=vs.85).aspx , 미래는 밝게 보입니다 :)
Frode Nilsen


2

이전에 완전한 P3P 정책을 구현했지만 작업중인 새 프로젝트를 다시 번거롭게 진행하고 싶지 않았습니다. 이 링크는 문제에 대한 간단한 솔루션에 유용한 것으로 나타 났으며 "CAO PSA OUR"라는 최소 컴팩트 P3P 정책 만 지정하면됩니다.

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

이 기사는 Microsoft kb 기사에 대한 (현재 끊어진) 링크를 인용합니다. 정책은 나를 위해 속임수를 썼다!


1

p3p.xml 및 policy.xml 파일을 다음과 같이 결합 할 수도 있습니다.

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
  <POLICY-REFERENCES>
    <POLICY-REF about="#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY discuri="" name="policy1">
      <ENTITY>
        <DATA-GROUP>
          <DATA ref="#business.name"></DATA> 
          <DATA ref="#business.contact-info.online.email"></DATA> 
        </DATA-GROUP>
      </ENTITY>
      <ACCESS>
        <nonident/>
      </ACCESS>
      <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here -->
      <STATEMENT>
        <PURPOSE>
          <current/>
          <admin/>
          <develop/>
        </PURPOSE>
        <RECIPIENT>
          <ours/>
        </RECIPIENT>
        <RETENTION>
          <indefinitely/>
        </RETENTION>
        <DATA-GROUP>
          <DATA ref="#dynamic.clickstream"/>
          <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

헤더를 추가하는 가장 쉬운 방법은 Apache를 통한 프록시이며 mod_headers를 사용하는 것으로 나타났습니다.

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot /home/ubuntu/sites/shared/w3c/

  ProxyRequests off
  ProxyPass /w3c/ !
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ProxyPreserveHost on

  Header add p3p 'P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'
</VirtualHost>

따라서 /w3c/p3p.xml에 대한 요청을 제외한 모든 요청을 응용 프로그램 서버에 프록시합니다.

W3C 검사기로 모든 것을 테스트 할 수 있습니다


304 개의 요청으로 헤더를 보내나요? 304와 함께 P3P 헤더를 보내면 일부 IE 버전에서는 실제로 쿠키를 삭제합니다.
Joshua

죄송합니다.이 코드를 더 이상 사용하지 않으므로 알 수 없습니다. 문제가 발생하면 Apache의 상태 코드를 200으로 강제 설정할 수 있습니다.
Kris


1

나는이 주제에 대한 나의 기여를하기에는 약간 늦었다는 것을 알고 있지만,이 답변이 누군가를 도울 수있을 정도로 시간을 많이 잃었다.

내 사이트에서 타사 쿠키를 호출하려고했지만 물론 보안 수준이 낮더라도 Internet Explorer 10에서 작동하지 않았습니다 ... 왜 그런지 묻지 마십시오. iframe에서 나는 ajax와 함께 read_cookie.php (echo $ _COOKIE)를 호출했습니다.

그리고 왜 문제를 해결하기 위해 P3P 정책을 설정할 수 없었는지 모르겠습니다 ...

검색하는 동안 JSON에서 쿠키를 작동시키는 방법에 대해 알았습니다. 쿠키가 iframe을 통과하지 않으면 더 이상 배열을 통과하지 않을 것이라고 생각했기 때문에 시도조차하지 않습니다 ...

그거 알아요! 따라서 쿠키를 json_encode 한 다음 아약스 요청 후 디코딩하면 얻을 수 있습니다!

어쩌면 내가 놓친 것이있을 수 있고, 내가한다면, 모든 사과가 있었지만 어리석은 것을 보지 못했습니다. 보안을 위해 타사 쿠키를 차단하십시오. 암호화되지 않은 경우 쿠키를 통과 시키십시오. 보안은 지금 어디에 있습니까?

나는이 게시물이 누군가를 도울 수 있기를 바랍니다. 내가 뭔가를 놓치고 멍청하다면 저를 교육하십시오!


흥미로운 ... JS에서 쿠키를 해독하고 있습니까?
Piskvor 건물 왼쪽

아니요, PHP 함수 json_encode ()를 사용하여 JSON 배열로 쿠키를 작성한 다음 ajax JSON 호출을 통해 다시 가져옵니다.
pierreaurelemartin

1

이것은 마침내 나를 위해 일했습니다 (IBM의 정책 생성기를 사용하여 많은 성가신 후 일부 정책을 생성 한 후). 여기에서 정책 생성기를 다운로드 할 수 있습니다. http://www.softpedia.com/get/Security/Security-Related/P3P-Policy-Editor.shtml

공식 IBM 웹 사이트에서 더 이상 생성기를 다운로드 할 수 없었습니다.

이 파일들을 Web-App의 루트 폴더에 만들었습니다

/index.php
/w3c/policy.html (Human readable format)
/w3c/p3p.xml
/w3c/policy.p3p
  1. Index.php : 추가 헤더를 보내십시오 :
header('P3P: policyref="/w3c/p3p.xml", CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV DEM"');
  1. p3p.xml의 내용
<META>
    <POLICY-REFERENCES>
        <POLICY-REF about="/w3c/policy.p3p#App">
            <INCLUDE>/</INCLUDE>
            <COOKIE-INCLUDE/>
        </POLICY-REF>
    </POLICY-REFERENCES>
</META>
  1. 내 policy.html 파일의 내용

<html>
<head>
<STYLE type="text/css">
title { color: #3333FF}
</STYLE>
<title>Privacy Statement for YOUR COMPANY NAME</title>
</head>
<body>
<h1 class="title">Privacy Policy</h1>
<!-- "About Us" section of privacy policy -->
<h2>About Us</h2>
<p>This is a privacy policy for YOUR COMPANY NAME.
Our homepage on the Web is located at <a href="YOURWEBSITE">
YOURWEBSITE</a>.
The full text of our privacy policy is available on the Web at 
<a href="ABSOLUTE URL OF THIS FILE">
ABSOLUTE URL OF THIS FILE</a>
This policy does not tell users where they can go to exercise their opt-in or opt-out options.
<p>We invite you to contact us if you have questions about this policy.
You may contact us by mail at the following address:
<pre>FIRSTNAME LASTNAME
YOUR ADDRESS HERE
</pre>
<p>You may contact us by e-mail at 
<a href="mailto:info@YOURMAIL.de">
info@YOURMAIL.eu</a>. 
You may call us at TELEPHONENUMBER.
<!-- "Privacy Seals" section of privacy policy -->
<h2>Dispute Resolution and Privacy Seals</h2>
<p>We have the following privacy seals and/or dispute resolution mechanisms.
If you think we have not followed our privacy policy in some way, they can help you resolve your concern.
<ul>
<li>
<b>Dispute</b>:
Contact us for further information
</ul>
<!-- "Additional information" section of privacy policy -->
<h2>Additional Information</h2>
<p>
This policy is valid for 1 day from the time that it is loaded by a client.
</p>
<!-- "Data Collection" section of privacy policy -->
<h2>Data Collection</h2>
<p>P3P policies declare the data they collect in groups (also referred to as "statements").
This policy contains 1 data group.
<hr width="50%" align="center">
<h3>Group "App control data"</h3>
<p>We collect the following information:
<ul>
<li>HTTP cookies</li>
</ul>
<p>This data will be used for the following purposes:</p>
<ul>
<li>Completion and support of the current activity.</li>
<li>Web site and system administration.</li>
<li>Research and development.</li>
<li>Historical preservation.</li>
<li>Other purposes<p>Control Flow of the application</p></li>
</ul>
<p>This data will be used by ourselves and our agents.
<p>The data in this group has been marked as non-identifiable. This means that there is no
reasonable way for the site to identify the individual person this data was collected from.
<p>The following explanation is provided for why this data is collected:</p>
<blockquote>This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</blockquote>
<!-- "Use of Cookies" section of privacy policy -->
<hr width="50%" align="center">
<h2>Cookies</h2>
<p>Cookies are a technology which can be used to provide you with tailored information from a Web site. A cookie is an element of data that a Web site can send to your browser, which may then store it on your system. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it.
<p>Our site makes use of cookies.
Cookies are used for the following purposes:
<ul>
<li>Site administration
<li>Completing the user's current activity
<li>Research and development
<li>Other
(Control Flow of the application)
</ul>
<!-- "Compact Policy Explanation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Compact Policy Summary</h2>
<p>The compact policy which corresponds to this policy is:
<pre>
    CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV"
</pre>
<p>The following table explains the meaning of each field in the compact policy.
<center><table width="80%" border="1" cols="2">
<tr><td align="center" valign="top" width="20%"><b>Field</b></td><td align="center" valign="top" width="80%"><b>Meaning</b></td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CP=</tt></td>
<td align="left" valign="top" width="80%">This is the compact policy header; it indicates that what follows is a P3P compact policy.</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ALL</tt></td>
<td align="left" valign="top" width="80%">
Access to all collected information is available.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DSP</tt></td>
<td align="left" valign="top" width="80%">
The policy contains at least one dispute-resolution mechanism.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NID</tt></td>
<td align="left" valign="top" width="80%">
The information collected is not personally identifiable.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CURa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for completion of the current activity.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ADMa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for site administration.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DEVa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for research and development.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>HISa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for historical archival purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OTPa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for other purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OUR</tt></td>
<td align="left" valign="top" width="80%">
The data is given to ourselves and our agents.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NOR</tt></td>
<td align="left" valign="top" width="80%">
The data is not kept beyond the current transaction.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NAV</tt></td>
<td align="left" valign="top" width="80%">
Navigation and clickstream data is collected.
</td></tr>
</table></center>
<p>The compact policy is sent by the Web server along with the cookies it describes.
For more information, see the P3P deployment guide at <a href="http://www.w3.org/TR/p3pdeployment">http://www.w3.org/TR/p3pdeployment</a>.
<!-- "Policy Evaluation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Policy Evaluation</h2>
<p>Microsoft Internet Explorer 6 will evaluate this policy's compact policy whenever it is used with a cookie.
The actions IE will take depend on what privacy level the user has selected in their browser (Low, Medium, Medium High, or High; the default is Medium.
In addition, IE will examine whether the cookie's policy is considered satisfactory or unsatisfactory, whether the cookie is a session cookie or a persistent cookie, and whether the cookie is used in a first-party or third-party context.
This section will attempt to evaluate this policy's compact policy against Microsoft's stated behavior for IE6.
<p><b>Note:</b> this evaluation is currently experimental and should not be considered a substitute for testing with a real Web browser.
<p><b>Satisfactory policy</b>: this compact policy is considered <em>satisfactory</em> according to the rules defined by Internet Explorer 6.
IE6 will accept cookies accompanied by this policy under the High, Medium High, Medium, Low, and Accept All Cookies settings.
</body></html>

  1. policy 내용 .p3p
<?xml version="1.0"?>
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
    <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM -->

    <!-- Expiry information for this policy -->
    <EXPIRY max-age="86400"/>

<POLICY
    name="App"
    discuri="ABSOLUTE URL TO policy.html"
    xml:lang="de">
    <!-- Description of the entity making this policy statement. -->
    <ENTITY>
    <DATA-GROUP>
<DATA ref="#business.name">COMPANY NAME</DATA>
<DATA ref="#business.contact-info.online.email">info@YOURMAIL.eu</DATA>
<DATA ref="#business.contact-info.online.uri">YOURWEBSITE</DATA>
<DATA ref="#business.contact-info.telecom.telephone.number">YOURPHONENUMBER</DATA>
<DATA ref="#business.contact-info.postal.organization">FIRSTNAME LASTNAME</DATA>
<DATA ref="#business.contact-info.postal.street">STREET</DATA>
<DATA ref="#business.contact-info.postal.city">CITY</DATA>
<DATA ref="#business.contact-info.postal.stateprov">STAGE</DATA>
<DATA ref="#business.contact-info.postal.postalcode">POSTALCODE</DATA>
<DATA ref="#business.contact-info.postal.country">Germany</DATA>
    </DATA-GROUP>
    </ENTITY>

    <!-- Disclosure -->
    <ACCESS><all/></ACCESS>


    <!-- Disputes -->
    <DISPUTES-GROUP>
        <DISPUTES resolution-type="service" service="YOURWEBSITE CONTACT FORM" short-description="Dispute">
            <LONG-DESCRIPTION>Contact us for further information</LONG-DESCRIPTION>
    <!-- No remedies specified -->
        </DISPUTES>
    </DISPUTES-GROUP>

    <!-- Statement for group "App control data" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="App control data"/>
        </EXTENSION>

    <!-- Consequence -->
    <CONSEQUENCE>
This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</CONSEQUENCE>

    <!-- Data in this statement is marked as being non-identifiable -->
    <NON-IDENTIFIABLE/>

    <!-- Use (purpose) -->
    <PURPOSE><admin/><current/><develop/><historical/><other-purpose>Control Flow of the application</other-purpose></PURPOSE>

    <!-- Recipients -->
    <RECIPIENT><ours/></RECIPIENT>

    <!-- Retention -->
    <RETENTION><no-retention/></RETENTION>

    <!-- Base dataschema elements. -->
    <DATA-GROUP>
    <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/></CATEGORIES></DATA>
    </DATA-GROUP>
</STATEMENT>

<!-- End of policy -->
</POLICY>
</POLICIES>

부모 창 서버 디렉토리 또는 iframe 서버 디렉토리로 이동합니까?
JackTheKnife


0

정적 콘텐츠로 P3P 압축 정책을 사용하려는 사람은 다음을 수행하십시오.

그것은입니다 당신이 정적 컨텐츠와 사용자 정의 서버 측 응답 헤더를 보낼 수있는 경우 가능합니다.

자세한 설명은 내 대답을 참조하십시오 : HTML에서 P3P 코드 설정



-1

더 나은 해결책은 iframe 내부에서 쿠키를 가져 오거나 설정할 페이지로 Ajax 호출을하는 것입니다 ...


1
AJAX는 여기에 도움이되지 않습니다 : 어떤 iframe을 내부에서 처리 쿠키 이하 ( "타사 쿠키")를 신뢰하고, IE는 개인 정보 보호 정책 필터를 통과 할 필요가있는 -에 상관없이 만약 AJAX 호출, 문서와 당신이있는 거 설정 쿠키 . 쿠키 조작 또는 일반 페이지 (테스트).
Piskvor

아니요, iframe 내부의 HTTP로 쿠키를 설정하는 ajax 호출을 수행하는 경우 Ie6은 보안 정책을 무시하고 쿠키를 설정합니다. 다운 보트하기 전에 내 솔루션이 잘못되었는지 확인하십시오.
Luca Matteis

newmoon.wz.cz/test/page.php 참조 AJAX를 통해 쿠키를 설정할 수 있지만 a) 새 세션을 시작하거나 b) JS에서 세션 ID를 설정하십시오- 거대한 보안 허점 (XSRF). 잘못, 사과드립니다.하지만 솔루션이 이전보다 잘못 보입니다 . 보안 허점을 만드는 것은 나에게 나쁜 것 같습니다.
Piskvor

( "보안 정책을 우회"하는 것은 적어도 버그처럼 보입니다 . 정책이 있으면 어떤 이유로 든 존재합니다. "보안 정책 / 사용자 기본 설정을 조이면 더 잘 알고 있습니다"라고 말하는 것은 미끄러운 미끄러운 경사입니다. 당신이 알려진 버그를 수정되지 않은 기능이 (아직)에 의존 할 것이다)?
Piskvor 건물 왼쪽

새로운 세션을 설정 하시겠습니까? 무슨 소리 야? 대부분의 브라우저는 p3p 헤더를 사용하지 않고 이것을 지원하므로 Ajax를 통해 수행하는 방법이 어떻게 다른지 이해할 수 없습니다.
Luca Matteis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.