2013-07-03 58 views
0

經典問題,一個Web應用程序具有安全和不安全的頁面(即賬戶頁面是安全的(HTTPS)和faq頁面不安全(HTTP)),作爲開發人員,我希望用戶在不安全頁面上看到自定義的登錄按鈕(即,如果您是新手,說'點擊登錄',如果您有會話,請點擊'歡迎用戶點擊查看您的帳戶')通過使用隨機路徑(安全)在本地使用cookie

爲此,我只有在帳戶頁面上發送服務器設置的安全Cookie,但該帳戶頁面(通過jQuery)也會根據安全Cookie設置不安全的cookie。瀏覽器可以使用不安全的cookie更新登錄按鈕(通過Javascript)

我是我們隨機的字符串(每次在服務器上隨機化)以防止cookie通過網絡發送。這個數據只是一個用戶名,所以它沒有被完全鎖定的關鍵,但是它仍然應該被保護起來。

的Cookie在這裏設置使用jQuery(jQuery的cookie的插件):

$.cookie('userLoggedIn', 'username', { domain: '.example.com', httpOnly: false, path: 'DFKLJGHDFDLFKHGAFDAKDJFH', expires: [one year], secure: false }); 

到目前爲止好,但給黑客,並隨機路徑工作,防止不安全的cookie盜竊?

+0

您可以通過在服務器端設置登錄/歡迎文本來完全避免這種情況。有沒有理由不能/不想這樣做? –

+0

兩個原因:1)我仍然需要通過HTTP通過網絡發送的cookie,2)性能:每次都需要HTTP請求,而用戶需要獲取緩存頁面 –

回答

0

我知道這是一個非常古老的問題,但我會盡力回答。

是和

它不一定需要是完全隨機的 - 它是隨機的唯一原因是爲了確保用戶永遠不會試圖去該網址,也沒有任何Ajax請求去那裏。爲確保發生這種情況,您可以使用例如路徑中的UUID。

您還需要確保您控制域上的所有JS。

這種方式cookie永遠不會通過線路發送(它通過線路發送的唯一方式是讓您的JS讀取它的document.cookie屬性並附加它或以某種方式發送該隨機URL的請求) 。

黑客將無法讀取cookie,因爲瀏覽器保護從其他域(協議://域:端口組合必須匹配)執行的JS執行的Cookie。

因此,讀取cookie的唯一方法是訪問本機,然後可以從光盤讀取cookie,因爲它以純文本格式保存。但是訪問用戶帳戶可能會帶來更多的安全漏洞。

所以要回答你的問題,這是相當安全的,但你必須記住這樣的解決方案帶來的漏洞。