今天,我将与您分享Django如何设置CSRF的知识。其中,您还将解释如何启动Django。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
本文目录清单:
1.如何解决Django的CSRF?2。CSRF_Token理解3.当我使用Django的超级用户登录时,CSRF错误出现,如图所示,如何求解它?相交4。2020-10-26 Django的会话和中间件CSRFDJANGO帖子出现了403个解决方案。据说从django1.x中添加了CSRF保护。X0DX0AX0DX0ACSRF(跨站点请求伪造跨站点请求伪造,也称为“一点击攻击”或骑行,通常被缩写为CSRF或XSRF,这是CSRF或XSRF网站的恶意使用。尽管听起来像是一个跨站点脚本(XSS),但它与XSS大不相同,并且攻击方法几乎左侧留在左侧。XSS使用网站中的信任用户,而CSRF则使用从可信赖的用户的请求中使用伪装的信任网站。与XSS攻击相比,CSRF攻击通常经常攻击攻击。在线说,提交参数中必须有csrf_token才能成功。对于我的测试:x在模板文件中,每个表单提交域添加{%csrf_token%}标签,并使用渲染函数返回视图,或强行使用requestContext而不是上下文。example.example:example:from Django.shortcuts import renderdef contact(replect)contactform()#here i使用django表返回渲染(请求,'contact.html',{'form':form}:form})3px;填充:4PX 5PX;}发送控制我们{%csrf_token%} {{form.subject.errrs}}工作:{form.subject} {{form.email.email.errrs}}您的邮箱地址:{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{form.email} {{form.message.errrs}消息:{form.message} x0dx0a 3:x0dx0a方法2只能在Django模板中使用。如果我们使用javascript或ajax?如何添加csrf_token怎么办?x0dx0ax0dx0a我们可以使用javascript在cookie中提取csrf_token。在编写表单时CSRF_Token的角色:编写表单:
Django下的CSRF预防机制
CSRF预防机制
CSRF的防御可以从服务器和客户端启动。从服务到服务,防御效果更好。现在,一般的CSRF防御也可以在服务器上执行。
令牌防御的总体想法是:
步骤1:后端随机生成一个令牌,并将此令牌保存在会话状态。同时,后端将把这个令牌放在首页上。
步骤2:当前端需要启动请求(例如发布)时,将此令牌添加到请求数据或头部信息中,然后将其传递到后端;
步骤3:后端验证前端请求是否一致的令牌和会话是一致的;
1. Django下的CSRF预防机制
当Django首次响应客户端的请求时,将在服务器端随机生成一个令牌,并将其放置在cookie中。
这可以避免受到CSRF的攻击。
在Templete中,将{%CSRF_Token%}标记添加到每个帖子表单中。
在HTTP响应的曲奇中,Django将为您添加一个CSRFTKOKN字段,该值是自动令牌令牌
在所有帖子模板中,添加一个{%csrf_token%}标签,其功能是添加隐藏的输入标签以形式,如下所示
而且此csrf_token = cookie.csrftoken,有上下文['csrf_token'] = request.cookies ['csrtoken']当呈现模板['csrtoken']时
通过表单将帖子发送到服务器时,该表单包含隐藏在其上隐藏的输入项上的输入项。服务器收到它后,Django将在此请求中验证cookie中csrftkoken字段的值以及表单中的csrfmiddletken字段的值。如果是相同的,则表示这是法律请求,否则,此请求可能来自其他人的CSRF攻击,并退回403禁止。
当通过AJAX向服务器发送帖子请求时,需要添加X-CSRFTOKEN标头。值是cookie中csrftoken的值。收到服务湍流后,Django将验证该请求中的CSRFTOKEN字段,并且AJAX邮政消息标题X-CSRFTKEN标头是相同的。如果相同,则表明这是法律请求
具体实施方法
Django已完成供用户完成伪造的交叉点请求,并通过django.middle.csrf.csrf.csrfviewmiddleware.for Django,反cross -cross -site请求伪造功能分为全球和本地。
全球的:
中间件django.middleware.csrf.csrfviewmiddleware
当地的:
@csrf_protect,即使在设置中没有全局中间件,也强行设置了当前功能的fake -cross -stoite请求。
@csrf_exempt,即使设置中有全局中间件,取消当前功能抗-cross -Cross -site请求伪造功能。
注意:来自django.views.decocotors.csrf导入csrf_exempt,csrf_protect
1.原则
将csrftoken添加到客户端页面,验证服务器,并由服务器验证的工作由'django.middleware.csrfviewmiddleware..csrfviewmiddleware..ine完成,这有两种捍卫Django中CSRF攻击的方法:
1.以形式添加csrftoken
2.将X-CSRFTKEN请求头添加到请求请求。
注意:Django默认情况下对所有帖子请求进行了CSRFTKOOK验证。如果验证失败,则403错误等待。
django套装在cookie中
VUE发送职位403:CSRF失败:CSRF代币任务或不正确的解决方案:
您需要在表单后面添加csrf_token。
表单方法=“ post” {%csrf_token%}
xxx
/形式
或修改DJANGO源代码:django/mideware/csrf.py proces_view
在“#如果用户没有CSRF cookie”上添加以下代码:
如果request.path.startswith('/admin'):
返回接受()
如果Django版本为1.2.5,则修改了修改:
如果request.path.startswith('/admin'):
返回self._accept(请求)
这意味着请求URL是/admin,即使表格背后没有CSRF_Token,您也可以访问它。
33,CBV Plus装饰员
-pela上课:添加课程
表格django.utils.decorator导入method_decorator
@method_decorator(login_auth,name ='get')
@method_decorator(login_auth,name ='post')
类UserInfo(视图):
经过
- 第二:添加到方法
来自django.utils.decocortrt method_decoror
类UserInfo(视图):
@method_decorator(login_auth)
def获取(自我,请求,args, *kwargs):
经过
如图所示
===================== dmind fige ======================================================
您可以谈论Django如何设置CSRF的引入。感谢您花时间阅读本网站的内容。有关如何启动Django和Django如何设置CSRF的更多信息。不要忘记在此网站上找到它。