python - 揭秘 Flask app.secret_key

标签 python flask

app.secret_key未设置,Flask 将不允许您设置或访问 session 字典。

这就是flask user guide has to say在这个问题上。

我对 Web 开发很陌生,我不知道任何安全性的东西是如何/为什么工作的。我想了解 Flask 在幕后做了什么。

  • 为什么 Flask 强制我们设置这个 secret_key属性(property)?
  • Flask 如何使用 secret_key属性(property)?
  • 最佳答案

    任何需要加密(为了防止被攻击者篡改)的东西都需要设置 key 。对于 Flask 本身来说,“任何东西”就是 Session对象,但其他扩展可以使用相同的 secret 。
    secret_key只是为 SECRET_KEY 设置的值配置键,也可以直接设置。

    Sessions section in the Quickstart关于您应该设置什么样的服务器端 secret ,有很好的、理智的建议。

    加密依赖于 secret ;如果您没有为要使用的加密设置服务器端 secret ,那么每个人都可以破解您的加密;它就像你电脑的密码。 secret 加上要签名的数据用于创建签名字符串,这是一个难以使用 cryptographic hashing algorithm 重新创建的值。 ;只有当你拥有完全相同的 secret 和原始数据时,你才能重新创建这个值,让 Flask 检测是否有任何未经许可的更改。由于 Flask 发送给客户端的数据中永远不会包含 secret ,因此客户端无法篡改 session 数据并希望生成新的有效签名。

    Flask 使用 itsdangerous library做所有艰苦的工作; session 使用 itsdangerous.URLSafeTimedSerializer class使用自定义的 JSON 序列化程序。

    关于python - 揭秘 Flask app.secret_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22463939/

    相关文章:

    python - 使用Python re的多模式嵌套正则表达式

    python - ValueError : Invalid property specified for object of type plotly. graph_objs.Pie: 'xaxis'

    python - 求一个数的除法余数

    python - to_sql pyodbc count 字段不正确或语法错误

    python - 如何修改flask收到请求时的默认输出

    python - 如何在 Jinja2 中将时间戳更新为全局变量?

    python - 我想装饰一个类中的方法但不编辑 class.py -- 里面的细节

    python - 我可以学习的很棒的 flask /其他 python 微框架代码

    python - 使用 Flask-SQLAlchemy 反射(reflect)表引发 RuntimeError : application not registered

    python - 如何为 flask 中的外部库禁用 ExtDeprecationWarning