zoukankan      html  css  js  c++  java
  • CSRF

    CSRF介绍

    • 英文:Cross Site Request Forgy
    • 中文:跨站请求伪造
    • 攻击者在其他的网站对目标网站产生了影响

    CSRF攻击危害

    • 利用用户登录态
    • 用户不知情
    • 完成业务请求
    • 盗取用户资金(转账,消费)

    钓鱼网站

    就类似于你搭建了一个跟银行一模一样的web页面
    用户在你的网站转账的时候输入用户名 密码 对方账户
    银行里面的钱确实少了 但是发现收款人变了

    最简单的原理

    你写的form表单中 用户的用户名 密码都会真实的提交给银行后台
    但是收款人的账户却不是用户填的 你暴露给用户的是一个没有name属性的input框
    你自己提前写好了一个隐藏的带有name和value的input框

    解决钓鱼网站的策略

    只要是用户想要提交post请求的页面 我在返回给用户的时候就提前设置好一个随机字符串
    当用户提交post请求的时候 我会自动先取查找是否有该随机字符串
    如果有 正常提交
    如果没有 直接报403

    csrf_token

    csrf_token 是为了防止csrf(跨站请求伪造),防止csrf的手段就有给form加个token。

    更简单的说:就是防止黑客盗用你存在网站(cookie)上的账户密码和信息

    csrf_token使用

    form表单
        你在写的时候只需要加上一个
        {% csrf_token %}
    
            
    ajax
    	第一种  自己再页面上先通过{% csrf_token %}获取到随机字符串  然后利用标签查找 
    data:{'username':'jason','csrfmiddlewaretoken':$('[name="csrfmiddlewaretoken"]').val()},
        第二种
    data:{'username':'jason','csrfmiddlewaretoken':'{{ csrf_token }}'},
        第三种
            拷贝js文件
    

    csrf_exempt

    csrf_exempt  只有两种装饰的方式
    from django.views.decorators.csrf import csrf_exempt, csrf_protect
    from django.utils.decorators import method_decorator
    # 第一种
    # @method_decorator(csrf_exempt,name='dispatch')
    class MyCsrf(View):
    	# 第二种
    	@method_decorator(csrf_exempt)
    	def dispatch(self, request, *args, **kwargs):
    		return super().dispatch(request,*args,**kwargs)
    	def get(self,request):
    		return HttpResponse('hahaha')
    		
    除了csrf_exempt之外 所有的其他装饰器 在CBV上面都有三种方式
    @method_decorator(csrf_protect,name='post')
    class MyCsrf(View):
    	@method_decorator(csrf_protect)
    	def dispatch(self, request, *args, **kwargs):
    		return super().dispatch(request,*args,**kwargs)
    	def get(self,request):
    		return HttpResponse('hahaha')
    
    	@method_decorator(csrf_protect)
    	def post(self,request):
    		return HttpResponse('post')
    
    
  • 相关阅读:
    c#中使用多线程访问winform中控件的若干问题(转)
    Winform 分页控件(转)
    C#争论:什么时候应该使用var?
    C#的Contains() 值还是引用
    DataTemplate
    DX11_基于GPU_ComputeShader的3D精确拾取
    串行的BitonicSort双调排序
    Directx11_使用Effect框架包装ComputeShader
    Silverlight自适应布局
    poj3626广搜
  • 原文地址:https://www.cnblogs.com/aden668/p/11766967.html
Copyright © 2011-2022 走看看