Django-中间件

定义

  • 中间件是Django请求/响应处理的钩子框架。他是一个轻量级、低级的插件系统、用于全局改变Django的输入输出
  • 中间件一类的形式体现
  • 每个中间件组件负责做一些特定的功能

编写

  • 中间件类需继承django.utile.deprecation.MiddlewareMixin类
  • 中间件须实现下列五个方法中的一个或多个:
    • process_request(self, request)
      执行路由之前被调用,在每个请求上调用,返回None或HttpResponse对象,返回None可以接着往下走,返回HttpResponse则请求被打断,返回HTTPResponse对象
    • process_view(self, requst, callback, callback_aargs, callback_kwargs)
      callback视图函数、后面的是视图函数参数
      调用视图之前调用,返回None或HttpResponse对象
    • process_response(self, request,response)
      所有响应返回浏览器前被调用,在每个请求上调用,返回HttpResponse对象
    • process_exception(self,request,exception)
      当处理过程中抛出异常时调用,返回HttpResponse对象
    • process_templates_response(self,request,response)
      在视图函数执行完毕且试图返回的对象中包含render方法时被调用,该方法需要返回实现了render方法的响应对象

注册

  • 在settings.py中需要注册一下自定义的中间件
# file: settings.py
MIDDLEWARE = [
	...
]

注意:配置为数组,调用时以先上到下再进入视图函数再先下到上的顺序调用

CSRF攻击

CSRF跨站伪造请求攻击
某些恶意网站上包含链接,表单按钮或者JavaScript,它们会利用登陆过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站请求伪造CSRF(Crosee-Site Request Forgey)

csrf防范
  • Django采用‘比对暗号’机制防范攻击
  • cookies中存储暗号1,模板表单中藏着暗号2,用户只有在本网站下提交数据,暗号2才会随着表单提交给服务器,Django对比两个暗号,对比成功,认为合法,否则返回403
配置
  1. setting.py中middleware中’django.middleware.csrf.CsrfViewMiddleware’,打开
  2. 模板中,form标签下添加如下标签{% csrf_token %}
<form action = "/" methon ="post">
	{% csrf_token %}
	<input tyoe = 'text' name = "name">
	<input type = "submit" value = "提交">
</form>

如果某个视图函数不需要是CSRF校验,可以引入装饰器关闭

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
	pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值