XSS CSRF攻击

网页攻击

Xss攻击

1、原理

  xss攻击为跨站脚本攻击,主要原因是用户输入的内容不可控形式为在别人的评论区,

  或者留言板写入js代码并且提交,如果我们不添加防护措施,就会造成,输入的

  js代码会被浏览器解析执行,从而让别人获取到我们浏览器中的信息

2、代码

  django中是默认有xss保护的,

  如果我们想要取消xss保护,通关 管道符 加上 safe

  前端接收参数  {{ page_info | safe }}

  后端直接传入js代码, 就可以被浏览器解析执行

CSRF攻击

  csrf攻击为跨站伪造攻击

  当我们访问了不受信任的网站时,某一个图片或者连接很有可能会将我们

  浏览器的一些信息发送到黑客的电脑上,然后他们伪造我们去一些受信任的

  网站对我们的账号进行一些操作(可以轻松拿到我们的cookie)

由此可见,普通的cookie验证防护不了这种csrf攻击,因此我们通过服务器给浏览器发送

一个token字符串进行认证

1、开启csrf验证Djan配置中开启CSRF中间件

'django.middleware.csrf.CsrfViewMiddleware',

 

 

 

b. 前端表单中开启csrf_token

<form action="">
    {% csrf_token %}
    <input type="text">

 

 

 

2、当我们开启csrf认证后,想要让部分业务逻辑关闭csrf认证 

from django.views.decorators.csrf import csrf_exempt
# 先导入csrf_exempt
@csrf_exempt
def test2(request):
    pass

  这样即便开启了全局csrf认证,也能通过装饰器关闭test2的csrf认证

3、当我们关闭csrf认证后,想要让部分业务逻辑开启csrf认证

from django.views.decorators.csrf import csrf_protect
# csrf_protect
@csrf_protect
def test2(request):
    pass

4、CBV装饰器的使用

  我们上面演示的都是FBV,如果是CBV

from django.views.decorators.csrf import csrf_protect,csrf_exempt
from django.utils.decorators import method_decorator
#csrf_protect 表示关闭的全局csrf认证, 开启部分csrf认证
#csrf_exempt 表示开启全局csrf认证, 关闭部分csrf认证
# name  表示只使用于某种提交的方式
@method_decorator(csrf_exempt,name="get")
class Test(object):
    def get(self):
        pass
    def post(self):
        pass

 

5、ajax提交token的方式

<script>
{#    首先我们要获取到token#}
{#通过属性选择器找到存放token值的标签  $("input[name='csrfmiddlewaretoken']") #}
    csrf_token = $("input[name='csrfmiddlewaretoken']").val();
    $.ajax({
        type:"post",
        url:"/test2/",
        {#token放在headers中提交过去,并且headers里面的key时固定的#}
        headers:{"X-CSRFToken":csrf_token},
        success:function () {
        }
    })
</script>

 

转载于:https://www.cnblogs.com/huikejie/p/11213284.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值