首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django+Vue项目学习第五篇:vue+django发送post请求,解决csrf认证问题

,得到如下结果,仍然报错了 这次的错误是CSRF验证失败 通过查资料得知,这个是django特意加的一个csrf认证,当发送post请求,向服务器提交数据时都要做这个验证,很蛋疼~~ 为了解决这个问题...提取cookie中的csrftoken 这个cookie应该是django服务器向客户端发送的,通过它来完成csrf验证,post请求必须拿到cookie中的csrftoken然后跟着请求一起发送才行!...:django配置好跨域允许携带cookie后,并且axios也配置好允许携带cookie,发送post请求时,Django会自动发给客户端一个cookie 我们需要把这个cookie中的csrftoken...,也就是csrftoken 可以自己试一下,如果把这个cookie删掉,发post请求就会报 403Forbidden 如果按照上述配置好的话,每次触发这个请求时,都会在这里自动生成一个cookie...= true 或者 前端没有调用后台生成csrftoken的方法,触发post请求时,django服务器便不会发给客户端这个cookie 网上也有博主说可以在axios请求中添加 withCredentials

4K20

Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法

Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: ? 注释掉此段代码,即可。...缺点:导致Django项目完全无法防止csrf攻击 解决方法2: 在 views.py文件中 #导入,可以使此次请求忽略csrf校验 from django.views.decorators.csrf...import csrf_exempt #在处理函数加此装饰器即可 @csrf_exempt def post(request): name=request.post['name']...解决方法4: django的csrf安全工作顺序是:先从后台获取csrf_token 并发送给前端,然后前端在进行form表单提交时,把带有名为csrfmiddlewaretoken,值为 csrf_token...'] return HttpResponse('{} ; {}'.format(str(re), csrf_token)) 然后在另一个POST请求中 加参数  名为:csrfmiddlewaretoken

3.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CSRF 跨站请求伪造

    因此,用户自己可以设置浏览器使其在发送请求时不再提供 Referer。当他们正常访问银行网站时,网站会因为请求没有 Referer 值而认为是 CSRF 攻击,拒绝合法用户的访问。 ​...如果不用{% csrf_token %}标签,在用 form 表单时,要再次跳转页面会报403权限错误。 用了{% csrf_token %}标签,在 form 表单提交数据时,才会成功。...会判断,这个随机字符串是不是第一次它发给用户的那个,如果是,则数据提交成功,如果不是,则返回403权限错误。...Django 中处理CSRF csrf是针对与post请求的才会做验证 几种处理方式 csrf_token 用于form表单中,作用是跨站请求伪造保护。...如果不用{% csrf_token %}标签,在用 form 表单时,要再次跳转页面会报403权限错误。 用了{% csrf_token %}标签,在 form 表单提交数据时,才会成功。

    1.1K20

    Django CSRF认证的几种解决方案

    什么是CSRF 浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的cookie。...浏览器的同源策略并不能阻止CSRF攻击,因为浏览器不会停止js发送请求到服务端,只是在必要的时候拦截了响应的内容。或者说浏览器收到响应之前它不知道该不该拒绝。...Django使用CsrfViewMiddleware中间件进行CSRF校验,默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有携带csrf字段,导致校验失败,报403错误。...那么我们如何解决这种403错误呢? 解决方法 1. 去掉项目的CSRF验证 ? 注释掉此段代码即可,但是不推荐此方式,将导致我们的网站完全无法防止CSRF攻击。 2....指定请求去掉CSRF校验 可以只针对指定的路由去掉CSRF校验,这也分为两种情况: FBV:用函数实现路由处理 # 导入,可以使此次请求忽略csrf校验 from django.views.decorators.csrf

    2K20

    软件安全性测试(连载6)

    CSRF注入防护方法 1)CSRF Token技术 CSRF Token技术是在页面产生GET或POST请求之前,建立一个参数,以及一个cookie,参数的值与cookie的值是相等的,当HTTP请求传输到服务器端的时候...,服务器会检查GET或POST请求参数是否与cookie的值相等,如果相等返回200代码,否则返货403代码。...下面介绍下Django中的django.middleware.csrf.CsrfViewMiddleware的工作原理。...当HTML请求页面发送到服务器端,服务器进行验证名为csrfmiddletoken hidden中的内容与名为csrftoken的cookie内容是否相同,如果相同,返回200(OK)响应码,然后进入/...14 CSRF Token在前后端分离中的解决方案 2)其他方法 但是这个方法是防君子不防小人的,有经验的工程师可以构造接口测试代码,将cooiles的值与hidden中的值设置为一样的,然后提交,可以通过假

    66120

    Django MVT之T

    CSRF CSRF(Cross-site request forgery)跨站请求伪造,csrf攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求...Django默认开启了csrf中间件来防御csrf攻击,所以当发送post请求时会返回403错误,而开发者访问本站点的网页时同样会返回403错误,所以在Django MVT之V中直接注释掉了csrf防御...为了防止csrf攻击,需要打开csrf中间件。(注意:默认情况下,Django已经打开) 但是开启了csrf防御后,请求本站点页面也会返回403错误,解决办法是使用csrf_token标签 post请求提交到服务器后,会先由csrf中间件进行对比验证,如果验证失败则返回403错误,而不会进行后续的处理。...URL反向解析 Django除了提供了从URL到视图函数的映射,还提供了反向的从映射名到URL的解析功能。使用URL反向解析可以动态生成URL,当URL变化时,不需要手动去更改。

    1.2K20

    Django教程(二)- Django视图与网址进阶1. HTML表单2.CSRF3.代码操作

    Django 提供的 CSRF 防护机制 django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。...字段 (只需要在模板里加一个 tag, django 就会自动帮你生成,见下面) 在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提交的表单里的...如果一样,则表明这是一个合法的请求,否则,这个请求可能是来自于别人的 csrf 攻击,返回 403 Forbidden....在所有 ajax POST 请求里,添加一个 X-CSRFTOKEN header,其值为 cookie 里的 csrftoken 的值 Django 里如何使用 CSRF 防护: 首先,最基本的原则是...233 注意:测试之前需在终端打开服务器python manage.py runserver 8001(端口号默认是8000,也可以选择不设置!)

    4.3K40

    CSRF 原理与防御案例分析

    我们知道,当我们使用 img 等标签时,通过设置标签的 src 等属性引入外部资源,是可以被浏览器认为是合法的跨域请求,也就是说是可以带上 Cookie 访问的。...id=1的GET请求,并且这个请求是带上 Cookie 的,而 b.com 的服务器仅仅是通过 cookie 进行权限判断,那么服务器就会进行相应的操作,比如假设此处为删除某个文章,用户在不知情的情况下便已完成操作...这个就是 Django 的 CSRF 防御机制,当我们发送 POST 请求时 Django 会自动检测 CSRF_Token 值是否正确。...我们把Debug打开,可以看到如果我们的 POST 请求无 CSRF_Token 这个值,服务端会返回 403 报错。 ? 现在我们往表单上添加 CSRF_Token 的验证: Django 才会接受 POST 请求来的数据,否则返回错误,并且原登陆页面的 CSRF_Token 重新生成,上一个进行销毁,很大程度上防御住了 POST 请求的 CSRF。 ?

    2.3K30

    Django 模板HTML转义和CSRF4.3

    ,这就是跨站攻击 演示csrf如下 创建视图csrf1用于展示表单,csrf2用于接收post请求 def csrf1(request): return render(request,'booktest... step3:测试刚才的两个请求,发现跨站的请求被拒绝了,效果如下图 取消保护 如果某些视图不需要保护,可以使用装饰器csrf_exempt,模板中也不需要写标签,修改csrf2的视图如下...from django.views.decorators.csrf import csrf_exempt @csrf_exempt def csrf2(request): uname=request.POST...信息 本站中自动添加了cookie信息,如下图 查看跨站的信息,并没有cookie信息,即使加入上面的隐藏域代码,发现又可以访问了 结论:django的csrf不是完全的安全 当提交请求时,中间件'django.middleware.csrf.CsrfViewMiddleware...'会对提交的cookie及隐藏域的内容进行验证,如果失败则返回403错误

    1.2K40

    Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09

    csrf 中间件 跨站请求伪造 post请求提交数据通过 csrf 校验 form 表单 ajax 发送 csrf 装饰器相关 未注释掉 csrf 中间件时 单功能取消 csrf 校验:csrf_exempt...post 请求都会写上先去 settings.py 里把 csrf 这个中间件暂时注释掉了 django 请求生命周期 ***** 经过 中间件 之后才能进入 urls.py(再 views.py ....如果有的话会直接拿到数据并返回请求(这样可以节约资源,降低服务器以及数据库的压力) 如果没有的话会接着一层一层地走中间件,然后路由配置、views.py ......不同浏览器绝对不一样 post请求提交数据通过 csrf 校验 form 表单 form 表单发送 post 请求的时候,需要你做的是写一段代码 {% csrf_token %} 即可,不需要注释 csrf...@csrf_protect 未注释掉 csrf 中间件时 单功能取消 csrf 校验:csrf_exempt FBV from django.views.decorators.csrf import

    1.4K50

    Axios曝高危漏洞,私人信息还安全吗?

    当XSRF-TOKEN cookie可用且withCredentials设置已启用时,该库会在对任何服务器的所有请求中使用秘密的XSRF-TOKEN cookie值插入X-XSRF-TOKEN头。...XSRF-TOKEN 是一种常用的防御措施,它涉及到在客户端生成一个令牌(Token),这个令牌会在进行敏感操作时由服务器进行验证。...漏洞出现的情况可以是: 「服务器配置不当」:如果服务器没有正确设置或验证XSRF-TOKEN,那么即使在客户端设置了令牌,攻击者也可能绕过这种保护机制。...然后,使用这个命令安装最新版本的Axios库:npm i axios 创建一个Axios实例,配置如下,启用跨站点请求伪造(CSRF)保护,通过在请求中包括凭据: const instance =...确认在使用Axios实例发送请求时,"XSRF-TOKEN" cookie的值会泄露给任何第三方主机。这对于安全至关重要,因为你不希望将CSRF令牌泄漏给未授权的实体。

    2.3K20
    领券