internet-explorer - ie缓存清理工具 - 清cookie




Cookie阻止/未保存在Internet Explorer的IFRAME中 (15)

我有兩個網站,假設他們是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的cookie。 在Firefox中,這個問題不會出現。

出於測試目的,我在http://newmoon.wz.cz/test/page.php上創建了一個類似的設置。

example.com使用基於cookie的會話(並且我無能為力),因此如果沒有cookie, process.asp將無法執行。 我如何強制IE保存這些cookie?

嗅探HTTP流量的結果:在GET /someform.asp響應中,每個會話都有一個有效的Set-Cookie頭(例如Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY ),但在POST /process.asp請求上,沒有Cookie頭在所有。

編輯3:一些AJAX +服務器端腳本顯然能夠避開這個問題,但這看起來非常像一個bug,再加上它會打開一整套新的安全漏洞 。 我不希望我的應用程序使用錯誤+安全漏洞的組合,只是因為它很容易。

編輯: P3P政策是根本原因 ,下面有完整的解釋。


For anyone trying to get the P3P Compact Policy working with static content:

It is only possible if you are able to send custom server-side response headers with the static content.

For a more detailed explanation see my answer here: Set P3P code in HTML


這篇文章提供了一些關於P3P的評論和一個捷徑解決方案,可以減少IE7和IE8的問題。


A better solution would be to make an Ajax call inside the iframe to the page that would get/set cookies...



一種可能的做法是將域名添加到允許的網站工具 - >互聯網選項 - >隱私 - >網站:somedomain.com - >允許 - >確定。


任何在node.js中都有這個問題的人

然後添加這個p3p模塊,並在中間件上啟用該模塊。

npm install p3p

我使用快遞,因此我將其添加到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


您也可以像這樣組合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驗證器對其進行全部測試


我之前已經實施了一項完整的P3P政策,但不想再為我正在開發的一個新項目通過麻煩。 我發現這個鏈接對問題的簡單解決方案很有用,只需指定一個“CAO PSA OUR”最小的緊湊P3P策略:

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

該文章引用了一個(現在已斷開)鏈接到Microsoft kb文章。 該政策為我做了詭計!


我在這裡沒有提到的一個解決方案是使用會話存儲而不是cookie。 當然這可能不適合每個人的要求,但在某些情況下,這是一個簡單的解決方法。


我得到它的工作,但解決方案有點複雜,所以忍受著我。

發生了什麼

實際上,Internet Explorer對IFRAME頁面的信任程度較低(IE稱為“第三方”內容)。 如果IFRAME內的頁面沒有隱私政策,則其Cookie被阻止(狀態欄中的眼睛圖標表示它,當您點擊它時,它會顯示一個阻止的URL列表)。

邪惡之眼http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png

在這種情況下,當cookie被阻塞時,會話標識符不會被發送,並且目標腳本會引發'未找到會話'錯誤。

(我已經嘗試將會話標識符設置為表單並從POST變量中加載它, 這可能會起作用 ,但出於政治原因,我無法做到這一點。)

可以使IFRAME 內部的頁面更加可信: 如果內部頁面發送帶有IE可接受的隱私策略的P3P頭部,則Cookie將被接受

如何解決它

創建一個p3p策略

一個好的起點是W3C教程 。 我已經完成了它,下載了IBM隱私策略編輯器,並且在那裡我創建了一個隱私策略的表示,並給它一個名稱以引用它(這裡是policy1 )。

注意 :在這一點上,您實際上需要確定您的網站是否有隱私政策,如果沒有,請創建它 - 無論是收集用戶數據,數據類型,使用情況,訪問權限,等等。你需要找到這些信息並思考它。 只需將幾個標籤打在一起就不會削減標籤。 這一步不能純粹用軟件來完成,而且可能是高度政治性的(例如,“我們應該出售點擊統計數據嗎?”)。

(例如“該網站由ACME有限公司運營,它使用匿名的每會話標識符進行操作,僅在明確允許的情況下收集用戶數據,並且僅用於以下目的,數據僅在必要時存儲,只有我們的公司可以訪問它等等“)。

(使用此工具進行編輯時,可以查看策略中的錯誤/遺漏,“HTML策略”選項卡也非常有用:在底部,它具有“策略評估” - 快速檢查策略是否會被阻止通過IE的默認設置)

編輯器將導出到.p3p文件,該文件是上述策略的XML表示形式。 此外,它可以導出此政策的“緊湊版本”。

鏈接到政策

然後需要一個策略引用文件( 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上設置了web服務器來發送帶有響應的緊湊標題,如下所示:

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標題必須真實地代表您自己的隱私政策!

利潤!

在這種配置下,邪惡之眼不會出現,cookie即使在IFRAME中也會保存,並且應用程序可以正常工作。

編輯:除非你喜歡從訴訟中辯護,否則不要做

有幾個人建議“只需將一些標籤放入P3P標頭,直到邪惡之眼放棄”。

標籤不僅僅是一堆,它們具有真實的世界意義 ,它們的使用賦予您真正的世界責任

例如,假裝你從不收集用戶數據可能會使瀏覽器感到高興,但如果你真正收集用戶數據,P3P就會與現實相衝突。 簡單而簡單, 你有意向用戶說謊 ,這在某些國家可能是犯罪行為。 如在“入獄,不要收200美元”。

一些例子( 見全套標籤的p3pwriter ):

  • NOI :“網站不收集識別的數據。” (只要有任何定制,登錄或任何數據收集(*****分析,任何人?),您必須在您的P3P中承認)
  • STP :保留信息以符合規定的目的。 這要求信息在盡可能早的時候被丟棄。 網站必須有保留策略來建立銷毀時間表。 保留策略必須包含在網站的人們可以閱讀的隱私政策中,或者鏈接到該網站的隱私政策。“(因此,如果您發送STP但沒有保留策略,那麼您可能會犯下欺詐行為,這是多麼酷?完全沒有。)

我不是律師,但我不願意去法院看看P3P標題是否真的具有法律約束力,或者您是否可以向您的用戶承諾任何內容而不真正兌現承諾。


我知道我的貢獻有點遲,但是我失去了這麼多的時間,也許這個答案會幫助某個人。

我試圖在我的網站上調用第三方cookie,當然,即使在安全級別較低的情況下,它也無法在Internet Explorer 10上運行......不要問我為什麼。 在iframe中,我用ajax調用了一個read_cookie.php(echo $ _COOKIE)。

我不知道為什麼我無法設置P3P政策來解決問題......

在我的搜索過程中,我看到了有關在JSON中使用cookie的一些問題。 我甚至不嘗試,因為我認為如果cookie不通過iframe,它不會再通過數組傳遞...

猜猜看,它的確如此! 所以,如果你json_encode你的cookie然後解碼你的ajax請求,你會得到它!

也許有一些我錯過了,如果我做了,我所有的道歉,但我從來沒有見過這麼愚蠢的東西。 為了安全起見阻止第三方cookie,為什麼不,但是如果編碼則讓它通過? 現在安全在哪裡?

我希望這篇文章能幫助別人,如果我錯過了一些東西,我很愚蠢,請教育我!


我能夠通過簡單地將這個小標題添加到IFrame(PHP解決方案)中的站點來讓邪惡的眼睛消失:

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

請記住按Ctrl + F5重新加載您的網站或資源管理器可能仍然顯示邪惡的眼睛,儘管事實證明它的工作正常。 這可能是我為什麼有這麼多問題得到它工作的主要原因。

根本沒有任何政策文件是必要的。

編輯:我發現了一個很好的博客條目,解釋了IFrame中cookie的問題。 它還可以快速修復C#代碼: 框架,ASPX頁面和拒絕Cookies



這是一個關於這個問題的重要話題,但是我發現一個重要的細節(至少對我來說至關重要)沒有在這里或其他任何地方發布(我很抱歉,如果我錯過了),P3P行必須是通過從第三方服務器發送的每個文件的頭文件,甚至沒有設置或使用cookies文件(如Javascript文件或圖像)的文件。 否則,Cookie將被阻止。 我在這裡的帖子中有更多內容: http://posheika.net/?p=110 : http://posheika.net/?p=110


這終於為我工作了(經過大量的ha and並使用IBM策略生成器生成一些策略)。 您可以在此下載策略生成器: softpedia.com/get/Security/Security-Related/… : softpedia.com/get/Security/Security-Related/…

我無法再從官方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:[email protected]">
[email protected]</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. Content of 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">[email protected]</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>




p3p