在Python中创建一个保存会话

时间:2015-07-10 13:23:35

标签: python security google-app-engine

使用会话变量是否安全,如下所示:

base64.b64encode(os.urandom(256))
据说

urandom提供了良好的随机性。 base64然后只编码此字符串。这种论证是否正确,因此该方法是否安全?

@Qiau指出,os.urandom取决于操作系统的实现。就我而言(该脚本在Google App Engine上运行),此接缝可以安全使用(see Google Groups post)

1 个答案:

答案 0 :(得分:1)

是。那是正确的。 base64只对字符串进行编码。

来自文档:

  

urandom的(...)

   urandom(n) -> str

   Return n random bytes suitable for cryptographic use.
     

b64encode(s,altchars = None)

   Encode a string using Base64.

根据documentation:

,对于加密应用程序应该是不可预测的
  

此函数返回来自OS特定随机源的随机字节。对于加密应用程序,返回的数据应该是不可预测的,尽管其确切的质量取决于操作系统的实现。在类UNIX系统上,这将查询/ dev / urandom,在Windows上它将使用CryptGenRandom()。如果未找到随机源,则将引发NotImplementedError。