假設有一個網站foo.com
,它從網站bar.com
載入JavaScript。現在,說網站bar.com
的JavaScript嘗試使用document.cookies
來讀取cookie。我的印象是使用JavaScript,您可以閱讀瀏覽器中設置的所有Cookie,而不管它們的來源。但事實證明,來自網站bar.com
的JavaScript只能訪問由bar.com
設置的cookie,而不是任何其他cookie。如果是這種情況,那麼腳本注入攻擊如何進行cookie竊取?JavaScript和第三方Cookie
回答
但事實證明,來自網站bar.com的JavaScript只能訪問由bar.com設置的cookies,而不能訪問任何其他cookie。
這是不正確的。重要的是包含<script>
元素的HTML文檔的位置,而不是在src屬性中提到的<script>
提到的JS文件的URL。
我懷疑你的問題是,你正在訪問document.cookies
當屬性被稱爲document.cookie
(奇異!)
他們加載腳本裏面的被攻擊的頁面。
例如,當博客系統中的評論遭到破壞時,它們會包含一個script
元素,該元素在頁面呈現時執行。該腳本可以獲取cookie並將其發送給攻擊者的服務器。
這就是爲什麼你應該永遠信任用戶的輸入,並在註釋中不允許至少某些標籤(或翻譯每<
到<
)。但是不要在客戶端這樣做,因爲這種預防技術很容易被繞開;測試(和更改)服務器端的惡意輸入。
您只能在已經設定爲給定的域名訪問的cookies。從Wikipedia article on cookies:
旁名稱/值對,一個cookie 還可包含過期日期,一個 路徑,一個域名和 cookie是否僅用於加密 連接。 RFC 2965要求cookie 有一個版本號,但這通常是 省略。這些數據段 遵循name = newvalue對,並且用分號分隔 。例如, cookie可以由服務器 通過發送一行Set-Cookie創建: name = newvalue;到期日期=;路徑= /; domain = .example.org。
域和 路徑告訴該cookie 必須發送回服務器瀏覽器的時候 請求給定域和 路徑的網址。如果未指定,則會將 默認爲請求的對象 的域和路徑。因此, 域名和路徑字符串可能會告訴 瀏覽器發送Cookie,而其中的 通常不會。對於安全性 的原因,如果服務器是由域字符串指定的域名 的成員,則Cookie僅被接受 。
如果foo.com
發送cookie其中有中bar.com
域名,甚至.com
,然後JavaScript代碼bar.com
可以讀取該cookie。但是,大多數瀏覽器被配置爲只在域名匹配時才接受cookie,並且會拒絕這樣的cookie。
我確認cookie存在,但JavaScript無法讀取它。 – roger 2010-07-29 15:00:58
- 1. 禁用第三方cookie是否也禁用由第三方javascript創建的cookie?
- 2. Facebook連接和第三方cookie?
- 3. 第三方Cookie和轉化跟蹤
- 4. 第三方Cookie和Flash動作腳本
- 5. 第三方Cookie跟蹤器
- 6. iframe中的第三方cookie
- 7. 使用jquery cookie的第三方cookie
- 8. 在Javascript和服務器中讀取第三方Cookie
- 9. 在Firefox中訪問第三方Cookie
- 10. 網站上的第三方社交Cookie
- 11. Safari 5.7.1不允許第三方Cookie
- 12. 第三方cookie的 - 從其他域
- 13. 如何設置第三方Cookie
- 14. iOS6中的第三方Cookie UIWebView
- 15. 第三方「跟蹤cookie」如何工作?
- 16. Piwik:從第三方cookie中提取idvisitor?
- 17. 從第三方域設置cookie
- 18. 在PHP中設置第三方Cookie
- 19. 在PHP中更新第三方Cookie
- 20. 第三方的web api驗證和javascript
- 21. GWT和第三方跨域JavaScript
- 22. 如何測試觸發設置第三方cookie的Javascript
- 23. 第三方腳本可以設置第一方cookie嗎?
- 24. 如何將Cookie分類爲第三方或第一方
- 25. Chrome擴展和Django:驗證是否允許第三方Cookie
- 26. 如何在Phonegap和Android 3.2下啓用第三方Cookie?
- 27. 記住自定義和第三方Cookie發佈Django登錄
- 28. iframe中的第三方cookie和facebook應用程序,getUser失敗
- 29. Facebook應用程序(iframes)和第三方cookie
- 30. 檢測IE第三方Cookie和混合內容設置
這也是CDN的工作方式,就像本站加載的jQuery腳本一樣:'http:// ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js' does not活在域名'stackoverflow.com'上。 – 2010-07-29 14:45:55
@David,在輸入問題時,cookie是拼寫錯誤。我剛剛嘗試alert(document.cookie),儘管設置了cookie,但我只是得到一個空字符串。我很困惑。 – roger 2010-07-29 14:59:31
我做了一個測試。該域名沒有任何不同。也許您試圖獲取的Cookie位於不同的路徑上,或者僅設置爲HTTP。 – Quentin 2010-07-29 15:26:34