【发布时间】:2009-02-19 21:47:29
【问题描述】:
在网页的 URL 中使用 Python UUID 模块生成的值是否安全? Wnat 将这些 ID 用作 URL 的一部分。是否有任何由 Python UUID 生成的不应该出现在 URL 中的非安全字符?
【问题讨论】:
在网页的 URL 中使用 Python UUID 模块生成的值是否安全? Wnat 将这些 ID 用作 URL 的一部分。是否有任何由 Python UUID 生成的不应该出现在 URL 中的非安全字符?
【问题讨论】:
总是对将放入 URL 的数据进行 urlencode 是一种很好的做法。那么你就不需要关心 UUID 的细节或者它是否会在未来发生变化。
【讨论】:
他们是安全的。有关所有可能的输出格式,请参阅 here。它们都是可读的字符串或整数。
【讨论】:
我主要使用 GUID 作为主键,并且经常需要将它们作为 URL 参数传递。
带有破折号和额外字符的十六进制形式对我来说似乎是不必要的长。但我也喜欢表示十六进制数字的字符串非常安全,因为它们不包含可能导致 URL 出现问题的字符。
我使用 url 安全的 base64 字符串代替十六进制。以下是执行此操作的一些 Python 代码。它不符合任何 UUID/GUID 规范(除了具有所需的随机性)。
import base64
import uuid
# get a UUID - URL safe, Base64
def get_a_Uuid():
r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes)
return r_uuid.replace('=', '')
【讨论】: