代码之家  ›  专栏  ›  技术社区  ›  ivanleoncz velhala

解码烧瓶会话cookie[重复]

  •  0
  • ivanleoncz velhala  · 技术社区  · 7 年前

    我正在尝试在我的Flask web应用程序上设置一些安全性。作为第一步,我将通过设置 SESSION_COOKIE_SECURE 真的。

    但是当我从“inspect element”获取会话cookie之后,我可以轻松地解码会话cookie,并且添加 会话COOKIE安全 或者不。

    from flask import Flask, request, app, render_template, session, send_file, redirect
    
    MyApp = Flask(__name__)
    MyApp.secret_key = "something"
    application = MyApp  
    if __name__ == "__main__":
        MyApp.debug = False
        MyApp.config.update(
            SESSION_COOKIE_SECURE=True,
            SESSION_COOKIE_HTTPONLY=True,
            SESSION_COOKIE_SAMESITE='Lax',
        )
        MyApp.config["SESSION_PERMANENT"] = True
        MyApp.run()
    

    我还尝试使用以下语法添加此属性,但这没有区别:

        MyApp.config['SESSION_COOKIE_SECURE'] = True
    

    当我试图打印时 会话COOKIE安全 我知道这个错误

    Traceback (most recent call last):
      File "...", line ..., in <module>
        print(MyApp.session_cookie_secure)
     AttributeError: 'Flask' object has no attribute 'session_cookie_secure'
    

    我的Flask版本是1.0.2,我在HTTPS上。

    0 回复  |  直到 7 年前
        1
  •  3
  •   Martijn Pieters    7 年前

    设置 SESSION_COOKIE_SECURE 不加密cookie值no。设置时,这将导致Flask使用 "Secure" flag set . 这意味着浏览器只能通过加密的 连接

    烧瓶生产的饼干是加密的 签署 没有改变 ,因为无法访问服务器机密的第三方无法为cookie创建有效的签名。

    需要 若要加密会话cookie,请a)使用HTTPS(对来自外部的数据进行加密)和b)保护web应用免受XSS攻击。没有XSS攻击向量,攻击者根本无法访问您的cookie内容。

    SESSION_COOKIE_HTTPONLY 意味着浏览器永远不会向JavaScript公开cookie,只有对浏览器具有完全访问权限的人才能看到cookie值。

    Flask没有“加密cookie”设置,因为当您可以通过其他方式保护cookie时,它被认为是不必要的。您不应将信息存储在会话cookie中,该cookie应受到保护,以免最终用户访问浏览器存储;请将此类数据保存在服务器上,并仅在会话中存储唯一标识符,以便以后检索该机密数据。

    如果由于某种原因,您无法将此类机密保留在会话cookie之外,并且不愿意接受最终用户可以读取此数据,则您必须自己对cookie进行加密,或者为Flask使用其他会话提供程序,例如 EncryptedSession .


    至于属性错误:只有少数配置设置可以作为 Flask 反对。要打印任意配置设置,请使用 app.config

    print(MyApp.config['SESSION_COOKIE_SECURE'])
    
    推荐文章