2011-04-17 39 views

回答

0

沒有,你不應該把敏感的日期放在cookie中。

對於驗證信息,您應該使用會話。

http://www.tizag.com/phpT/phpsessions.php

+0

你是什麼意思按會話?據我所知,HTTP中沒有會話。 ASP.NET會話可以用cookie來實現。 – Dagang 2011-04-17 05:31:48

0

你可以加密提供了可靠的,公開的,衆所周知的算法的信息。然後,如果cookie被複制,收件人將無法從中收集任何信息。

當然這意味着您需要在服務器上進行加密和解密以確保安全,否則(如果您使用JavaScript)可以從JavaScript代碼獲取私鑰並用於解密cookie。您還需要確定您收到的cookie是來自原始收件人還是副本。

既然你必須在服務器端完成它的工作,那麼你也可以使用會話。這就像一個cookie,除了傳遞一個ID而不是實際的數據(該ID用於在服務器上查找數據)。但是仍然可以複製會話cookie並使另一臺計算機顯示爲作爲原始登錄,這就是FireSheep所做的。

1

如前所述,如果您將驗證信息以明文方式放入cookie中,您應該認真考慮使用類似會話的內容。

一旦你有了sesssions,也許你可以將會話ID與後端的IP地址相關聯,並檢查會話ID和請求IP地址是否匹配:這樣,如果有人複製包含會話ID的cookie,然後試圖遠程訪問該站點,會話ID和IP不匹配,並且認證將失敗。

+0

我怎樣才能得到客戶端的IP地址?我沒有在HTTP協議中看到它。 – Dagang 2011-04-17 05:51:13

+0

這裏是一個與Python的例子:http://stackoverflow.com/questions/979599/extracting-ip-from-request-in-python – thenoviceoof 2011-04-17 06:19:22

+0

基本上,它可能實際上不是HTTP協議的一部分,但你的語言界面應該提供一些方法來獲得它 – thenoviceoof 2011-04-17 06:21:04

0

您不應該將認證信息放入cookie本身。設置cookie時,應該創建一個會話,並綁定到一些持久存儲(sql/nosql)。

這基本上是一些與其他信息匹配的唯一隨機生成的ID。隨機生成的ID作爲cookie發送。在連續的請求中,您讀取cookie,並嘗試從中獲取用戶帳戶。

您可以在會話中放置約束,它只能從您分配給它的IP地址訪問。你也可以將它綁定到用戶代理(儘管這是安全的,用戶代理可以配置)。

相關問題