【问题标题】:How do i generate secure session_id on python?如何在 python 中生成安全会话 ID?
【发布时间】:2014-12-30 19:41:27
【问题描述】:

我正在尝试在 python 3 上生成一个安全的 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 的机制。请告诉我。

【问题讨论】:

  • 这确实是密码交换问题,而不是堆栈溢出问题。

标签: python security session python-3.x cookies


【解决方案1】:

使用 UUID4,您可以生成唯一 ID,并且易于使用。 (转换为字符串分配给cookie)

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

【讨论】:

【解决方案2】:

这里还有一个选项 -

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

【讨论】:

【解决方案3】:

答案可以在 Python 文档中找到:

如果您需要加密安全的伪随机数生成器,请使用 os.urandom()SystemRandom

您的会话 ID 需要“加密安全”,否则攻击者可以预测您的应用程序生成的会话 ID 并将其用于Session Prediction 攻击。

会话预测攻击侧重于预测允许攻击者绕过应用程序身份验证架构的会话 ID 值。通过分析和了解会话 ID 生成过程,攻击者可以预测有效的会话 ID 值并获得对应用程序的访问权限。

os.urandom()SystemRandom 将阻止会话 ID 可预测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2021-09-16
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多