2013-07-15 104 views
5

我熟悉設置一個閱讀cookies(使用php),但如果有一種方法可以讓用戶瀏覽器cookie由另一個第三方網站設置(即不是你自己的)是否可以閱讀第三方cookies

可以寫這樣的東西來查看所有的用戶設置cookie嗎?

print_r($_COOKIE);

回答

6

不,這是不可能的。

您只能讀取來自您自己的域的cookie。其他cookie甚至不會發送到您的服務器。

如果你能讀懂每一個餅乾的用戶,您將能夠獲得個人信息,比如他們的Facebook密碼,連接到他們的銀行等

這將是一個嚴重的侵犯隱私,因此,除了那些來自同一個域名的瀏覽器以外,瀏覽器不會發送cookie。

+0

如果我有權訪問客戶端計算機,該怎麼辦? Cookie是否以防止病毒讀取它們的方式加密或保護? – noderman

+0

網站決定是否加密cookie。 –

1

不,這是不可能的,因爲瀏覽器只發送由你的域設置的cookie,通常,它被附加到HTTP請求的頭部(如果先前由域設置的話)。

第三方cookie是由目標域上下文中的其他域設置的那些cookie,例如:在打開example.com時,它可能來自另一個網站(example2.com)的橫幅,在這種情況下,if example2.com設置cookie不能被example.com讀取,因爲它們來自不同的Origin,瀏覽器甚至不允許腳本訪問它。

0

不,當然不是。否則,您的網站會知道我的銀行的登錄cookie,並且您可以竊取我所有的錢。 Cookie只適用於設置它們的域。

+0

@Sven:不正確。域名(例如'domain.com')只能爲自己設置Cookie。它還可以包含來自第三方域的**內容**,例如來自'ads.com'的橫幅廣告。該第三方內容還可以設置Cookie,僅限於* its *域名'ads.com'。因此,您最終可能會從「domain.com」和「ads」中獲取Cookie。com',但每個cookie都是由來自其自己的域的HTTP響應設置的。 'domain.com'無法爲'ads.com'設置Cookie,反之亦然。 – RichieHindle

+1

你是對的。我實際上可以發送這樣的cookie,但瀏覽器不會接受它。 – Sven

2

沒有

當你訪問一個網站,你的網絡瀏覽器從域(somedomain.com)請求的信息,以及第三方域允許設置cookie。每個域只能讀取它創建的cookie,因此anotherdomain.com無法訪問由somedomain.com創建的cookie。

1

要閱讀cookie,您必須匹配cookie最初創建的域。瀏覽者認爲這是一個安全原則,不會讓網站訪問他們沒有創建的任何cookie。

請注意,還有其他幾個安全考慮因素可能會繞過此規則,例如DNSMasq與欺騙性瀏覽器證書相結合。這就是爲什麼DNSSec(和SOPA)是如此熱門的問題;安全孔DNSSec插頭還可以保護您的Cookie不會從您的餅乾罐中被盜。

過去有許多安全漏洞的實際例子。請參閱here以獲得與2008年不同的安全漏洞示例。