淄博 建网站,有了源码怎么做网站,个人建什么网站比较好,创新的邯郸网站建设CSRF(理解)
一. 什么是CSRFToken?
CSRF全拼为Cross Site Request Forgery#xff0c;译为跨站请求伪造。CSRF指攻击者盗用了你的身份#xff0c;以你的名义发送恶意请求。 包括#xff1a;以你名义发送邮件#xff0c;发消息#xff0c;盗取你的账号#xff0c;甚至于…CSRF(理解)
一. 什么是CSRFToken?
CSRF全拼为Cross Site Request Forgery译为跨站请求伪造。CSRF指攻击者盗用了你的身份以你的名义发送恶意请求。 包括以你名义发送邮件发消息盗取你的账号甚至于购买商品虚拟货币转账…造成的问题个人隐私泄露以及财产安全。
二.CSRF攻击示意图
客户端访问服务器时没有同服务器做安全验证
三.防止CSRF攻击
在客户端向后端请求界面数据的时候后端会往响应中的 cookie 中设置 csrf_token 的值在 Form 表单中添加一个隐藏的的字段值也是 csrf_token在用户点击提交的时候会带上这两个值向后台发起请求后端接受到请求以会以下几件事件
从 cookie中取出 csrf_token从 表单数据中取出来隐藏的 csrf_token 的值进行对比
如果比较之后两值一样那么代表是正常的请求如果没取到或者比较不一样代表不是正常的请求不执行下一步操作
四.csrf校验机制作用域代码
flask_wtf模块提供了csrf攻击的保护使用流程:
from flask_wtf.csrf import CSRFProtectCSRFProtect(app)
CSRFProtect(app)保护原理:
对应用程序app中的post,put,dispatch,delete, 4种类型的请求做保护,因为这些类型的请求是用于更改服务器的资源当以上面4种类型的请求,操作服务器资源的时候,会校验cookie中的csrf_token, 表单中的csrf_token信息只有上面二者的值相等的时候,那么校验则通过,可以操作服务器资源 提示: csrf_token值的生成需要加密, 所以设置SECRET_KEY 代码展示 后端代码:
from flask import Flask,render_template
from flask_wtf import CSRFProtectapp Flask(__name__)#设置SECRET_KEY
app.config[SECRET_KEY] fjkdjfkdfjdk#保护应用程序
CSRFProtect(app)app.route(/)
def show_page():return render_template(file01csrf.html)app.route(/add_data,methods[POST])
def add_data():return 登陆成功if __name__ __main__:app.run(debugTrue)前端代码,file01csrf.html文件
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
form action/add_data methodpost{#设置隐藏的csrf_token,使用了CSRFProtect保护app之后,即可使用csrf_token()方法#}input typehidden namecsrf_token value{{ csrf_token() }}label用户名:/label input typetext nameusernamebrlabel密码:/label input typetext nameusernamebrinput typesubmit value登陆
/form
/body
/html