2010-10-16 41 views
8

我一直在使用Flask一段時間,我非常喜歡這個框架。我不明白的一件事情是,在幾乎所有其他地方,他們都會談論將會話存儲在服務器上,然後會話ID在客戶端上,然後識別會話。但使用燒瓶後,我覺得沒有必要這樣做。將會話保存爲客戶端上的cookie加密服務於我的目的,並且看起來相當安全。唯一存在我無法會話密鑰進行加密,例如:作爲爲什麼要在服務器上存儲會話而不是在cookie中?

life='gfhjfkjdfa some encryption kj' 
在cookie

保存在客戶端上

session['life'] = 'the great one' 

將會出現。但是,它會如何加密呢? 我相信這裏的人比我知道的要好得多,所以請求某人請澄清:-)

回答

14

即使你的數據被加密,用戶仍然可以回滾他們的cookie到以前的狀態(除非你開始編碼的一次性標識等)

例如cookie說用戶有100個積分,用戶花費100個積分,他們得到一個新的cookie,說他們有0個積分。然後他們可以恢復以前的cookie(100個信用點)。

根據您如何加密cookie,用戶也可以刪除密鑰,插入僞造數據等。

+0

感謝尼克!但再次不會加密照顧it.for例如會議[學分] = 100將被保存爲諸如credits ='agfkalh加密agakh'之類的東西。如果用於加密cookie的祕密密鑰對於用戶是未知的並且足夠困難,他將如何能夠引起任何變化。我的意思是他肯定可以繼續刪除密鑰並插入一些僞造的數據,但只要他無法解密cookie,怎麼可能會產生任何問題 – Rasmus 2010-10-16 13:26:37

+6

如果100學分被加密爲credits =「abc」,用戶可以看到這個,並知道「abc」將被解密爲100.他們不需要能夠自己解密,因此他們可以花費所有的學分,然後再次設置學分爲「abc」。 有許多方法可以防止這種情況發生,但是當您只能將數據存儲在服務器上時,這並不值得一提。 – Nick 2010-10-16 14:21:09

+0

謝謝! ..這是我一直在尋找的東西,只是沒有跨越我的想法。 – Rasmus 2010-10-16 18:39:50

7

如果服務器需要會話數據,則將其存儲在服務器上是有意義的。它可以減少來自客戶端的來回發送的數據量。此外,Cookie對可以存儲的數據量也有限制。

+0

對於一個很好,簡潔的摘要+1。 – 2010-10-16 13:10:55

+0

謝謝Ned!但在大多數情況下,數據量可以忽略不計。 – Rasmus 2010-10-16 13:19:12

+2

但是,+1,因爲我覺得這是一個有效的原因,我猜我可以放心地忽略我的應用程序:-),但仍然等待更多的答案! – Rasmus 2010-10-16 13:36:45

6

除了上面

  1. 用戶已經提到的點可以禁止使用其瀏覽器設置的cookie。 許多防病毒掃描程序也會掃描並標記爲cookie的風險,因爲這些風險也會導致用戶計算機上不允許cookie。

  2. 即使在會話中間,用戶也可以刪除Cookie。 (事實上​​,前兩天我無意中做了一次,當時我的個人電腦掃描列出了追蹤cookies ......而我只是點擊了「清潔」,他們都沒了)。如果用戶恰好刪除了cookie,用戶狀態將會丟失。

如果您使用cookie來管理整個狀態,您總是依賴於客戶端環境及其設置。因此,您可能會至少需要一個回退機制,以防止Cookie被刪除/禁用等,以便您的應用程序正常工作。

+0

感謝InSane的回覆,但那不是我真正想知道的:-)。我想知道的是爲什麼要在服務器上存儲任何與會話相關的數據。我的意思是即使你將會話變量存儲在服務器上,你也必須將會話ID存儲在客戶端的cookie中。要回答你所說的話,通過刪除cookie,用戶實際上對自己造成更多傷害,因爲他失去了會話。如果他登錄該網站,他可能實際上被註銷,或者他甚至可能會丟失一些數據。就禁用cookies而言,我認爲必須對後備進行處理。謝謝 – Rasmus 2010-10-16 13:42:24

+1

@愛麗絲 - 其實這是我想要做的。基本上,您需要將會話相關數據存儲在服務器上,因爲存儲在客戶端上是不可靠的,因爲上面提到的例子。當cookie被禁用時,sessionid通常作爲一個值傳遞給查詢字符串。會話可以獨立於cookie - 即使會話編號爲 – InSane 2010-10-16 13:46:04

+0

「sessionid通常以查詢字符串的形式作爲其一個值傳遞」 - 是的,這聽起來不錯..1 ...感謝 – Rasmus 2010-10-16 13:49:54

1

SecureCookie的實現Flask使用不加密值。唯一可以確保的是用戶不知道應用程序使用的密碼就無法修改cookie。

相關問題