CSRF(XSRF)和CBV的介绍和防护-创新互联

CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS***一样,存在巨大的危害性,你可以这样来理解:
***者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了***者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为***者构建的恶意网站,User C为Web A网站的合法用户。

创新互联建站成都企业网站建设服务,提供做网站、网站设计网站开发,网站定制,建网站,网站搭建,网站设计,成都响应式网站建设公司,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18982081108

代码设计

url(r'^csrf1.html/', views.csrf1),
def csrf1(request):
    if request.method == "GET":
        return render(request,'csrf1.html')
    else:
        return HttpResponse('ok')



    
    csrf1.html


    
{% csrf_token %}#获取csrf_token,并且生成了一个隐藏的input标签 {{ csrf_token }}#这个是显示csrf_token,自己测试看看

在django里面打开csrf机制
CSRF(XSRF)和CBV的介绍和防护
通过浏览器访问http://127.0.0.1:8000/csrf1.html,如果没有开启这个csrf机制,关闭以后就不会认证。开启后,不获取随机csrf_token就会报错
CSRF(XSRF)和CBV的介绍和防护
CSRF(XSRF)和CBV的介绍和防护

csrf是随机的一个字符串,会发给服务端,然后再次访问的时候带着这个字符串
如果想让某一个函数不验证了,其他的使用怎么操作?????
要想完成上面的操作,需要添加一个装饰器,如下

from django.views.decorators.csrf import csrf_exempt #导入这个模块

@csrf_exempt#添加装饰器
def csrf1(request):
    if request.method == "GET":
        return render(request,'csrf1.html')
    else:
        return HttpResponse('ok')

全局禁用,局部使用,怎么操作????

from django.views.decorators.csrf import csrf_exempt,csrf_protect

# @csrf_exempt
@csrf_protect#局部使用
def csrf1(request):
    if request.method == "GET":
        return render(request,'csrf1.html')
    else:
        return HttpResponse('ok')

上面的这些都是FBV里面的操作,下面我们队CBV如何操作那

在django中的cbv里面,添加装饰器是有不一样的地方的,它需要把装饰器当成参数传递给另外一个模块中的,如下面

from django.views import View
from django.utils.decorators import method_decorator
@method_decorator(csrf_protect)
class Foo(View):
    def get(self,request):
        pass

    def post(self,request):
        pass

django 版本为1.913的导入View是这样的:from django.views.generic.base import View

也可以通过下面的方式加
CSRF(XSRF)和CBV的介绍和防护
还可以指定那个添加
CSRF(XSRF)和CBV的介绍和防护

也可以通过dispatch来全部加上(cbv 的原理dispatch)
CSRF(XSRF)和CBV的介绍和防护

注意针对csrf,只能添加到类上面

ajax发送csrftoken

第一种方法

ajax提交数据时候,携带csrf。值获取到,然后通过data携带
CSRF(XSRF)和CBV的介绍和防护

通过cookie

需要插件jquery.cookies.js插件
$.cooike('csrftocken')这个是获取,担任也可以设置
CSRF(XSRF)和CBV的介绍和防护

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


网站名称:CSRF(XSRF)和CBV的介绍和防护-创新互联
网站地址:http://scyanting.com/article/ioojj.html