• <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>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            【轉(zhuǎn)】PHP有關(guān)跨域的請(qǐng)求header("P3P: CP=CURa ADMa...)cookie -session解決方法

            對(duì)于IE來說(默認(rèn)安全級(jí)別下),iframe、img、link等標(biāo)簽都是只發(fā)送session cookie(又叫 第一方cookie),攔截本地cookie發(fā)送(又叫第三方cookie)。當(dāng)這些標(biāo)簽跨域引用一個(gè)頁(yè)面,實(shí)際上是發(fā)起了一次GET請(qǐng)求。

            在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");
            如果這個(gè)跨域的請(qǐng)求,HTTP返回頭中帶有Set-Cookie , 那么這個(gè)cookie對(duì)瀏覽器來說,實(shí)際上是無效的。

            看如下測(cè)試

            假設(shè)有 www.a.com    與 www.b.com 兩個(gè)域

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

            http://www.b.com/test.html 的內(nèi)容為:
            ----------------------------------------------------------------------

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

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


            http://www.a.com/test.php 是一個(gè)對(duì) a.com 域設(shè)置 cookie的頁(yè)面,其內(nèi)容為:
            ----------------------------------------------------------------------

            <?php

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

            ?>

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

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


            此時(shí)我們請(qǐng)求 http://www.b.com/test.html , 他包含一個(gè)iframe,會(huì)去跨域請(qǐng)求 www.a.com/test.php ,該php頁(yè)面會(huì)嘗試 set-cookie

            第一次請(qǐng)求, test.php 會(huì) set-cookie,所以瀏覽器會(huì)收到一個(gè)cookie。

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


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


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

            P3P header允許跨域訪問隱私數(shù)據(jù),從而可以跨域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>

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

            再次訪問兩次上面的測(cè)試過程

            可以看到第二個(gè)包已經(jīng)發(fā)送出了收到的cookie

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


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

            但是如果用 set-cookie 去改變?cè)O(shè)置好的cookie,則不再具有這種跨域訪問特性。


            P3P header 還有一個(gè)特點(diǎn)就是同一個(gè)包里只能設(shè)置一次,后面的P3P Header不會(huì)覆蓋前面的P3P header,瀏覽器只認(rèn)第一個(gè)。

            P3P 是 The Platform for Privacy Preferences 的簡(jiǎn)稱

            更多具體的內(nèi)容可以參閱W3C的標(biāo)準(zhǔn) http://www.w3.org/TR/P3P/

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

            比如 上面用到的

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

            CP 是 Compact Policy 的簡(jiǎn)寫

            CURa 中 CUR 是 <current/> 的簡(jiǎn)寫, a 是 always 的簡(jiǎn)寫

            當(dāng)然P3P header也可以直接 引用一個(gè) 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 的這種特性,在實(shí)際攻擊中,還是可以利用一下的。

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

            具體會(huì)變成什么樣我也不知道,畢竟web應(yīng)用安全和環(huán)境的關(guān)系是越來越緊密了。

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


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久国产高清一区二区三区| 日日狠狠久久偷偷色综合免费| 久久精品国产精品亚洲毛片| 精品国产乱码久久久久久郑州公司| 久久国产精品一区二区| 久久精品无码免费不卡| 亚洲AV日韩AV天堂久久| 狠狠色伊人久久精品综合网| 亚洲欧洲日产国码无码久久99 | 伊人色综合久久天天人手人婷| 91精品国产综合久久精品| 理论片午午伦夜理片久久| 2022年国产精品久久久久| 久久久久久久精品妇女99| 国产精品成人久久久久久久| 久久精品人人做人人爽97 | 久久乐国产精品亚洲综合| 久久久久人妻一区精品性色av| 久久综合亚洲色HEZYO国产| 2021精品国产综合久久| 亚洲午夜久久久久久久久久 | 久久精品人人做人人爽97| 性做久久久久久久久久久| 国产69精品久久久久9999| 久久久久久国产精品无码超碰| 性做久久久久久久久浪潮| 国产精品久久久久久久午夜片| av午夜福利一片免费看久久| 亚洲精品乱码久久久久久 | 韩国三级中文字幕hd久久精品| .精品久久久麻豆国产精品| 欧美午夜精品久久久久免费视| 97香蕉久久夜色精品国产| 中文字幕亚洲综合久久菠萝蜜| 国产99久久久国产精品~~牛| 狠狠狠色丁香婷婷综合久久五月| 精品乱码久久久久久久| 精品无码久久久久国产| 97精品久久天干天天天按摩| 精品国产VA久久久久久久冰| 久久国产乱子伦免费精品|