• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            【轉】PHP有關跨域的請求header("P3P: CP=CURa ADMa...)cookie -session解決方法

            對于IE來說(默認安全級別下),iframe、img、link等標簽都是只發送session cookie(又叫 第一方cookie),攔截本地cookie發送(又叫第三方cookie)。當這些標簽跨域引用一個頁面,實際上是發起了一次GET請求。

            在php文件頭部加 header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"')

            或者加 header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
            如果這個跨域的請求,HTTP返回頭中帶有Set-Cookie , 那么這個cookie對瀏覽器來說,實際上是無效的。

            看如下測試

            假設有 www.a.com    與 www.b.com 兩個域

            在 www.b.com 上有一個頁面,其中包含一個指向 www.a.com 的iframe

            http://www.b.com/test.html 的內容為:
            ----------------------------------------------------------------------

            <iframe width=300 height=300 src="http://www.a.com/test.php" ></iframe>

            ----------------------------------------------------------------------


            http://www.a.com/test.php 是一個對 a.com 域設置 cookie的頁面,其內容為:
            ----------------------------------------------------------------------

            <?php

            header("Set-Cookie: test=axis; domain=.a.com; path=/");

            ?>

            <script>
                alert(document.cookie);
            </script>

            ----------------------------------------------------------------------


            此時我們請求 http://www.b.com/test.html , 他包含一個iframe,會去跨域請求 www.a.com/test.php ,該php頁面會嘗試 set-cookie

            第一次請求, test.php 會 set-cookie,所以瀏覽器會收到一個cookie。

            如果 set-cookie 成功,再次請求該頁面,瀏覽器應該會 sent 剛才 recieve 到的cookie。可是由于前面說的跨域限制,在IE里的iframe標簽是 set-cookie不成功的,所以無法sent剛才收到的cookie。 這里無論是 session cookie 還是本地cookie都是一樣。


            可以看到,第二次發包,還是沒能sent出去cookie


            但是這種情況在加入了P3P header 后會改變。

            P3P header允許跨域訪問隱私數據,從而可以跨域set-cookie成功

            我們修改 www.a.com/test.php 為
            ----------------------------------------------------------------------

            <?php

            header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");

            header("Set-Cookie: test=axis; expires=Sun, 23-Dec-2018 08:13:02 GMT; domain=.a.com; path=/");

            ?>

            <script>
                alert(document.cookie);
            </script>

            ----------------------------------------------------------------------

            再次訪問兩次上面的測試過程

            可以看到第二個包已經發送出了收到的cookie

            而我們寫的javascript也能夠彈出cookie了。


            值得注意的是,P3P header只需要設置一次,這樣跟在這個P3P header后面的所有 set-cookie,都可以跨域訪問了。也就是說: 被P3P header設置過一次后,之后的請求不再需要P3P header,也能夠在iframe里跨域發送這些cookie。

            但是如果用 set-cookie 去改變設置好的cookie,則不再具有這種跨域訪問特性。


            P3P header 還有一個特點就是同一個包里只能設置一次,后面的P3P Header不會覆蓋前面的P3P header,瀏覽器只認第一個。

            P3P 是 The Platform for Privacy Preferences 的簡稱

            更多具體的內容可以參閱W3C的標準 http://www.w3.org/TR/P3P/

            在這里,我們看到的很亂的 P3P header里的東西,都不知道是什么亂七八糟的策略內容,實際上這是一些簡寫

            比如 上面用到的

            P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

            CP 是 Compact Policy 的簡寫

            CURa 中 CUR 是 <current/> 的簡寫, a 是 always 的簡寫

            當然P3P header也可以直接 引用一個 xml 策略文件

            比如這么寫
            HTTP/1.1 200 OK
            P3P: policyref="http://catalog.example.com/P3P/PolicyReferences.xml"
            Content-Type: text/html
            Content-Length: 7413
            Server: CC-Galaxy/1.3.18使用P3P的方法還有很多,這里不一一列舉了。


            最后,利用P3P Header 的這種特性,在實際攻擊中,還是可以利用一下的。

            比如利用CRLF插入一個P3P header后,改變一個本地cookie的值,該cookie在之后的過程中可以被iframe引用到,也許會發生一些很奇妙的事情。

            具體會變成什么樣我也不知道,畢竟web應用安全和環境的關系是越來越緊密了。

            posted on 2013-12-29 14:23 大龍 閱讀(1455) 評論(0)  編輯 收藏 引用

            久久久久无码精品| 久久亚洲中文字幕精品一区| 中文字幕久久波多野结衣av| 久久精品国产亚洲精品2020 | 国产亚洲色婷婷久久99精品| 免费精品99久久国产综合精品| 99热热久久这里只有精品68| 色老头网站久久网| 国产精品久久久久天天影视| 久久久久久青草大香综合精品| 麻豆成人久久精品二区三区免费 | 三级三级久久三级久久| 久久九九精品99国产精品| 国产精品gz久久久| 日韩精品久久久肉伦网站| 国产午夜福利精品久久| 久久99精品久久久久久hb无码 | 久久午夜羞羞影院免费观看| 色综合色天天久久婷婷基地| 亚洲中文字幕无码久久综合网| 国产精品久久久天天影视香蕉| 伊人久久大香线蕉av不卡| 欧美精品丝袜久久久中文字幕 | 久久精品国产第一区二区三区 | 亚洲一区精品伊人久久伊人| 精品综合久久久久久97超人| 亚洲va中文字幕无码久久不卡| 久久无码国产| 久久久久女教师免费一区| 99久久www免费人成精品| 99久久无码一区人妻a黑| 亚洲国产另类久久久精品小说 | 一本色道久久88精品综合| 亚洲国产成人久久综合区| 久久久久久国产a免费观看不卡| 九九久久99综合一区二区| 狠狠色噜噜狠狠狠狠狠色综合久久 | 久久久无码精品亚洲日韩按摩 | 久久不见久久见免费视频7| 精品无码久久久久国产动漫3d| 久久久国产视频|