python Django里CSRF 对应策略详解
Python  /  管理员 发布于 7年前   190
CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。
我的理解是,比如你访问过招商银行的网站并登陆之后,你的cookie信息暂时不会失效,
这时,hacker通过各种方式诱导你访问他给你提供的网站等链接,让你在同一浏览器访问
hacker给你的网站时,那么他给你提供的网站里面有直接有向招商银行提交转账信息的请求,这时,
这个转账请求会借用你刚刚登陆过招商银行的cookie信息,来使用的你的身份进行合法的转账。
那么为了减少这个情况的发生,在客户端与服务端交互的时候,当客户端浏览器第一次访问cookie的时候,服务端会有基于csrf的随机验证字符串生成,然后把这些字符串写到客户端cookie里,同时服务端在session里保存一份,当客户端浏览器再次发来post请求的时候,服务端会验证cookie里csrf_token(就是生成的这个随机字符串)。
Django里自动帮我们封装了这个功能,在Django项目里的setting.py文件里会默认开启 'django.middleware.csrf.CsrfViewMiddleware'
,这一项功能。
所以我们html文件里有post请求的时候要在from表单里添加{% csrf_token %}这一项
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div> <form action="/app01/login/" method="post"> {% csrf_token %} <input type="text" name="username"> <input type="password" name="pwd"> <input type="submit" value="提交"> </form> </div></body></html>
但是有的时候是不需要 csrf_token 认证的,有的时候是需要的,但是Django项目里的setting.py文件里设置了 'django.middleware.csrf.CsrfViewMiddleware'
之后就是全局生效了;这就 不是我们所需要的了。
那么如果有的函数不需要csrf_token 认证的话,那么就需要用到@csrf_exempt装饰器来设置单个函数不用csrf_token 认证
from django.views.decorators.csrf import csrf_exempt,csrf_protect
@csrf_exempt
是不需要设置csrf_token认证的
@csrf_protect
是 需要设置csrf_token 认证的
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号