【问题标题】:Is it safe to use Python UUID module generated values in URL's of a webpage?在网页的 URL 中使用 Python UUID 模块生成的值是否安全?
【发布时间】:2009-02-19 21:47:29
【问题描述】:

在网页的 URL 中使用 Python UUID 模块生成的值是否安全? Wnat 将这些 ID 用作 URL 的一部分。是否有任何由 Python UUID 生成的不应该出现在 URL 中的非安全字符?

【问题讨论】:

    标签: python url uuid


    【解决方案1】:

    总是对将放入 URL 的数据进行 urlencode 是一种很好的做法。那么你就不需要关心 UUID 的细节或者它是否会在未来发生变化。

    【讨论】:

    【解决方案2】:

    他们是安全的。有关所有可能的输出格式,请参阅 here。它们都是可读的字符串或整数。

    【讨论】:

      【解决方案3】:

      我主要使用 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('=', '')
      

      【讨论】:

      • 你可以用 uuid.uuid4().hex 或多或少做同样的事情
      • hex 使用起来稍微方便一些,但字符串也长了一些。
      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 2019-02-20
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多