【问题标题】:Why CherryPy session does not require a secret key?为什么 CherryPy 会话不需要密钥?
【发布时间】:2011-10-06 20:04:51
【问题描述】:

我注意到cherrypy 会话不需要密钥配置。相反,Pylons 会话:http://docs.pylonsproject.org/projects/pylons_framework/dev/sessions.html

如果我使用会话来记住用户身份验证,我会担心安全问题。

任何人都可以解释为什么cherrypy会话不需要密钥?或者有什么建议我应该如何确保使用会话记住用户登录是安全的?

【问题讨论】:

    标签: python pylons web-frameworks cherrypy


    【解决方案1】:

    基本上有两种不同的方式来维护会话状态:在服务器上或在客户端。

    使用服务器端方法,您将会话数据保存在文件、数据库或服务器内存中,并为其分配一个 ID。然后这个会话 id 被发送到客户端并通常存储在一个 cookie 中(尽管它们也可以嵌入在 URL 中)。然后对于每个请求,客户端的会话 ID 被 Web 应用程序读取并用于从存储在服务器上的任何位置加载会话数据。这样,客户端永远无法访问任何会话数据,也无法篡改它,但缺点是您必须通过恶意客户端使用过时的会话 ID 来防止会话劫持。这是当今大多数 Web 框架和应用程序使用的模型。

    另一种方法是将会话数据完全存储在客户端的 cookie 中。这种方法的缺点是客户端可以看到和篡改数据,因此您必须注意正确签署和加密数据以防止篡改。这就是拥有一个好的密钥发挥作用的地方。好处是您也不必担心会话劫持。

    Pylons 使用 Beaker 会话,可以将其配置为完全存储会话数据on the client side。这就是您需要密钥的原因。

    CherryPy 只在服务器上存储会话数据,然后向用户发送带有会话 id 的 cookie,因此客户端永远看不到会话数据,也无法篡改它。您可以将其配置为使用文件或仅将所有内容保存在内存中。您甚至可以连接到它并使用数据库来存储会话数据。

    就个人而言,我更喜欢 CherryPy 使用的方法,因为它与大多数网络使用的方法相同。它更易于保护,您可以轻松地与服务器上运行的其他应用程序共享会话数据,而无需担心加密或密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 2019-08-17
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2016-02-11
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多