为Flask应用程序添加安全功能,以防止某些基本威胁。
Flask-Mitten的Python项目详细描述
什么是长颈连指手套?
为Flask应用程序添加安全功能,以防止某些基本威胁。
功能
烧瓶手套支持烧瓶应用,以防止以下威胁。
- 单击顶进
- CSRF
- 通过抓取横幅进行信息披露
- JSON劫持
- 会话固定
它捆绑了以下烧瓶扩展的功能。
更多细节,请参见实现。
用法
安装
使用以下命令安装扩展:
pip install Flask-Mitten
配置
将扩展应用于您的应用程序:
from flaskext.mitten import Mitten app = Flask(__name__) mitten = Mitten(app)
请求头被重写以防止点击劫持和信息泄漏。
如果您想设置自己的横幅,可以这样做:
mitten.banner = "My Nice Banner!"
防止会话固定
登录后,调用会话对象的重新生成方法:
session.regenerate()
会话id将重新生成,并防止会话固定。
要放弃会话,请调用销毁方法:
session.destroy()
防止csrf
若要嵌入CSRF令牌,请在模板中添加以下行:
<input type="hidden" name="_csrf_token" value="{{ csrf_token() }}" />
POST请求会自动受到CSRF保护。
如果要从csrf保护中排除路由,请使用csrf免除装饰符:
@mitten.csrf_exempt @app.route('/public_api/', methods=['POST']) def public_api(): return "result", 200
防止json劫持
如果发送json响应,可以使用json修饰符来避免json劫持或通过直接浏览呈现json响应:
@mitten.json @app.route('/json_api/') def json_api(): return jsonify(result='success')
更多
有关更多详细信息,请参见示例应用程序。