python - Flask 会话数据可以被用户(威胁参与者)更改吗?
问题描述
我观看了一个人解码 Flask 会话并访问数据的视频,我认为之前有人说过不要在 Sessions 中存储机密,但是如果我想存储一个角色怎么办,比如"admin": False
授予 UI 访问前端管理按钮的权限
{% if session.admin %}
<button>Delete website</button>
{% endif %}
用户是否能够完全更改会话数据并覆盖服务器设置?
"admin": True # uh oh
解决方案
尽管知道如何解码 base64 的任何人都可以看到 Flask 会话内容,但用户不能简单地通过设置所需值并将它们放回会话中的 base64 编码来修改其内容,因为您可以在https://上听到完整性签名youtu.be/mhcnBTDLxCI?t=339。
签名本身是根据会话内容和仅在服务器端可见的应用程序机密生成的。因此用户将无法成功篡改会话的内容,因为他不知道SECRET_KEY
应用程序设置中设置的密钥。
所以回答你的问题:你可以在会话中存储这样的管理员标志,只要你的密钥是足够随机的Flask 会话文档并且没有透露给任何人,它就不会对安全构成威胁。
推荐阅读
- indexing - 如果 Janusgraph 有大约 70G 的数据,它重新索引大约需要多长时间
- .net-core - 我可以使用实体核心仅读取/更新实体的一部分吗?
- c# - 为什么Entity Framework linq查询的内部SQL中没有GroupBy子句?
- css - CSS 网格对齐
- python - 将随机文件每个复制 5 个到不同的文件夹
- java - 我不知道为什么 JLabel 没有显示
- flutter - 我需要将纬度和经度从rest api转换为listview
- excel - 将字典存储在数组中
- wso2 - WSO2 Microgateway 对 Soap API 的支持
- php - 如果库可以做同样的事情,CodeIgniter 中帮助程序的实际用途是什么?