csrf跨域伪造攻击

csrf跨域伪造攻击

Csrf跨域伪造攻击:使用当前浏览器还在生效状态的cookie对指定网站进行操作。最初针对的是银行网站的转账。

在这里插入图片描述

Django本身会对csrf进行校验,在django的1.4版本之前,csrf默认关闭,需要在settings当中手动开启,在1.4之后,默认开启

在这里插入图片描述

在django的任何post请求,都会在请求之初,给用户下发一下串用来校验身份的编码,并且每次请求不一样。

在这里插入图片描述

如果不加csrf_token校验,会发生csrf错误

使用django的csrf校验

1,返回post登陆页面的时候要用render方法,render方法和render_to_response方法的功能类似,但是会在第一个参数返回request,如果不返还,前端无法调用 {% csrf_token %}

def csrf_form(request):
    # 判断请求的方法
    if request.method=='POST':
        # 接受前端post的参数
        name = request.POST.get('username')
        password = request.POST.get('password')
        # 判断username和password有非空值
        if name and password:
            # 保存数据
            user = FromExample()
            user.name = name
            user.password = password
            user.save()
    return render(request,'csrfForm.html',locals())

2,在form表单内部的第一行,插入csrf校验,使用{% csrf_token %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    {% csrf_token %}
    <p>
        <label >用户名:</label>
        <input type="text" name="username">
    </p>
    <p>
        <label>密  码:</label>
        <input type="password" name="password">
    </p>
    <p>
        <input type="submit" value="提交">
    </p>
</form>
</body>
</html>

{% csrf_token %}标签实际上就是在前端的form表单当中生成了一个hidden隐藏域,name为csrfmiddlewaretoken,value是csrf校验的值

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值