【愚公系列】2022年01月 Python教学课程 53-Django框架之CSRF攻击的处理
【摘要】 一、Django的CSRF机制Django默认是开启CSRF的 1.页面中配置csrf<form action="/login/" method="POST"> {% csrf_token %} <input type="text" name="user"/> <input type="password" name="pwd"/> <input type="chec...
一、Django的CSRF机制
Django默认是开启CSRF的
1.页面中配置csrf
<form action="/login/" method="POST">
{% csrf_token %}
<input type="text" name="user"/>
<input type="password" name="pwd"/>
<input type="checkbox" name="rmb" value="1"/>
<input type="submit" value="登录"/>
</form>
2.ajax配置
<script src="/static/jquery-1.12.4.js"></script>
<script src="/static/jquery.cookie.js"></script>
<script>
$(function(){
$.ajaxSetup({
beforeSend:function(xhr,settings){
xhr.setRequestHeader('X-CSRFtoken',$.cookie('csrftoken'))
}
});
$('#btn1').click(function () {
$.ajax({
url: '/login/',
type: 'POST',
data: {'user': 'root', 'pwd': '123'},
success:function(arg){
}
})
});
$('#btn2').click(function () {
$.ajax({
url: '/login/',
type: 'POST',
data: {'user': 'root', 'pwd': '123'},
success:function(arg){
}
})
})
})
</script>
3.视图配置
已配置情况下,取消csrf机制
from django.views.decorators.csrf import csrf_exempt, csrf_protect
@csrf_exempt
def index(request):
if request.session.get('is_login', None):
return render(request, 'index.html', {'username': request.session['username']})
else:
return HttpResponse('错误')
未配置情况下,添加csrf机制
from django.views.decorators.csrf import csrf_exempt, csrf_protect
@csrf_protect
def index(request):
if request.session.get('is_login', None):
return render(request, 'index.html', {'username': request.session['username']})
else:
return HttpResponse('错误')
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)