2009-08-18 61 views
1

我敢肯定仍然有很多網站出於某種不可理解的原因使用Javascript來操作cookie,但根據所有可能發生的XSS,沒有什麼理由允許這樣做。爲什麼瀏覽器仍然允許這樣做?爲什麼不簡單地阻止JS看到cookies?爲什麼瀏覽器仍然允許Javascript查看cookie?

+8

因爲它的基本功能。如果這讓你感到困擾,請使用NoScript。 – voyager 2009-08-18 23:06:12

+0

這不是關於我的問題,而是關於如何讓用戶獲得他們的Cookie,這些用戶被一個巨大的,不可維護的代碼庫所吸收,我們希望從頭開始重建,但禁止這樣做。 :) – dirtside 2009-08-18 23:09:48

+1

http://www.codinghorror.com/blog/archives/001167.html HTTP只有cookie很酷... – russau 2009-08-18 23:14:42

回答

4

我必須承認,這個問題類似於說「爲什麼瀏覽器仍然支持HTML,它的老」。向後兼容性是一個巨大的問題,並且切斷操縱cookie的所有現有的javascript代碼將是災難性的。

這就是說,也有一些情況下,JavaScript的JavaScript處理操作對跨站點通信是有用的。

4

通過這種方式,您可以直接在Cookie中設置首選項,而無需發出AJAX請求並保存在服務器端的session/user_profile中。這對於您在重新訪問網站時想要保留的某些用戶界面首選項非常有用,而在服務器端更容易,因爲在會話過期後無需註冊即可查看您的首選項。

+0

你將如何實施沒有cookies的會話?使用URL參數?這比餅乾差。 – 2009-08-18 23:27:23

+0

+1。用戶名= sean&password = 1234的cookie從網站開發者的角度來說可能會很愚蠢。但是,hide_tips = true的cookies無論如何都是無害的。 – seanmonstar 2009-08-19 01:10:48

0

您可以從服務器端設置httponly cookie,而javascript無法看到這些。那會給你想要的效果。

我有時依賴於cookie進行存儲從JavaScript客戶端數據的很小量,理解,這是在最理想的瀏覽器將在每一個請求到服務器發送cookie,即使它只是在客戶端上使用側。

+0

但並非所有瀏覽器都能理解HTTPOnly cookie。即使他們明白,他們中的一些人也有錯誤。 – 2009-08-18 23:29:18

+0

瀏覽器支持/ XMLHttpReponse狀態表格:http://www.owasp.org/index.php/HTTPOnly#Browsers_Supporting_HTTPOnly 仍然有100%的瀏覽器放棄他們的Cookie到XSS攻擊。 – russau 2009-08-19 00:28:38

6

讓我們清楚; JavaScript操作cookies完全合理且可以接受。它本身並不會造成XSS問題。一個寫得很差的網站確實如此。

相關問題