flask—wtf中的csrf保护

刚刚碰到一个以前没怎么注意的问题,csrf保护。

什么是csrf?

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,简单的说就是攻击者可以盗用受害者的名义去发送各种请求,通常是通过某些方式借助受害者浏览器中存储的cookie值来实现的。


Flask-WTF的CSRF保护

flask-wtf实现csrf保护是很简单的,一般情况下是默认开启的,只需要在使用前配置'SECRET_KEY',然后在模板中加入:

{{ form.submit }}
{{ form.csrf_token }}

即可实现csrf保护。

一个简单的实现

在添加之前,登录界面的"登录"按钮代码:

<input class="btn btn-primary btn-block btn-flat" id="submit" name="submit" type="submit" value="登录">

在添加之后的效果:

<input class="btn btn-primary btn-block btn-flat" id="submit" name="submit" type="submit" value="登录">
<input id="csrf_token" name="csrf_token" type="hidden" value="IjQxZGYyZjQwMTFmMmM4ZDE2MWY3OWVjMmNjNzRjOGExYjg3ZTlhZGIi.XAYcoQ.FZXXEJyQpy3f8Ye0-gdIhEjbHn0">

可以看到添加了一个隐藏的字段。

如果此时打开f12,再点击登录按钮,就会发现提交的post请求中,cookie里面保存的session前面多了一长串的"乱码",这段乱码应该就是添加的token。

ps:其实写这篇的时候我还注意到一个很常见的问题,那就是cookie跟session的关系,以后有时间再整理下相关信息吧

 

参考资料:

https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/#icomments

https://ninghao.net/blog/2834(这是关于token的理解)

https://flask-wtf.readthedocs.io/en/stable/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值