2014-11-04 111 views
1

我試圖在python 3上生成一個安全的session_id。如何在python上生成安全session_id?

首先,我只是生成時間戳(包括微秒)的md5哈希值,然後通過cookie寫入值。但是這種方法可能會被劫持。例如,從瀏覽器A的cookie中提取session_id值,然後將session_id值修改爲瀏覽器B的cookie。它的作品很好。

爲了更安全起見,請從md5散列切換到可解密的加密。即session_id = decryptable_encryption(key:USER-AGENT,value:timestamp)並寫入cookie。它適用於相同的瀏覽器,但不同的瀏覽器。

加密IP地址不好。因爲它需要一直改變IP地址的移動環境。

要求更安全session_id,我如何生成它?我想知道生成會話ID的機制。請告訴我。

+0

這真的是一個密碼交換的問題,而不是堆棧溢出。 – 2014-11-04 01:33:01

回答

-1

這裏是多一個選擇 -

import string 
import random 
length = 30 
chars = string.ascii_letters + string.digits 
password = ''.join(random.choice(chars) for i in range(length)) 
+0

不應使用來自'random'模塊的僞生成器生成會話ID,因爲它不安全:[該模塊的僞隨機生成器不應用於安全目的](https://docs.python .ORG/3 /庫/ random.html)。 – SilverlightFox 2014-11-05 11:09:43

0

使用UUID4,您可以生成唯一的ID並且易於使用。 (轉換爲字符串分配到cookie中)

>>> from uuid import uuid4 
>>> uuid4() 
UUID('6f4a1f4d-1315-4e3e-a737-14f005f86b8c') 
>>> 
0

的答案可以在Python文檔中找到:

使用os.urandom()SystemRandom如果你需要一個密碼安全的僞隨機數發生器。

您的會話ID必須是「加密安全」,否則攻擊者可以預測你的應用程序生成的會話ID,並在Session Prediction攻擊使用它。

會話預測攻擊重點在於預測允許攻擊者繞過應用程序的身份驗證模式的會話ID值。通過分析和了解會話ID生成過程,攻擊者可以預測有效的會話ID值並訪問應用程序。

os.urandom()SystemRandom將阻止會話ID是可預測的。