栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django中间件和CSRF跨站请求攻击

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django中间件和CSRF跨站请求攻击

中间件类须继承自django.utils.deprecatiion.MiddlewareMixin类

中间件

开启中间件

# settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XframeOptionsMiddleware',
]

中间件类须实现下列五个方法中的一个或多个:

  • process_request(self, request)
    执行路由之前被调用,在每个请求上调用,返回None或HttpResponse对象
  • process_view(self, request, callback, callback_args,callback_kwargs)
    调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
  • process_response(self, request,response所有响应返回浏览器被调用,在每个请求上调用,返回HttpResponse对象
  • process_exception(self, request, except
    ion)当处理过程中抛出异常时调用,返回一个HttpResponse对象
  • process_template_response(self, request, response)
    在视图函数执行完毕且试图返回的对象中包含render方法时被调用;该方法需要返回实现了render方法的响应对象

调用过程

CSRF

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

在html的form元素中添

{% csrf_token %}

特殊说明:
如果某个视图不需要django进行csrf保护,可以用装饰器关闭对此视图的检查

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_voew(request):
	return HttpResponse('Hello World!')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号