当前位置:  首页  >  PHP资讯  >  业界资讯

Djangocsrf校验的实现

这篇文章主要介绍了Djangocsrf校验的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

引入:

通常,钓鱼网站本质是本质搭建一个跟正常网站一模一样的页面,用户在该页面上完成转账功能

转账的请求确实是朝着正常网站的服务端提交,唯一不同的在于收款账户人不同。

如果想模拟一个钓鱼网站,就可是给用户书写一个form表单 对方账户的input框没有name属性,然后你自己悄悄提前写好了一个具有默认的并且是隐藏的具有name属性的input框。

如果想解决这个问题,当转账请求发送给服务端后,服务端会给各台机器返回一个随机实时字符串。下一次,如果还有请求向服务端发时,服务端会校验字符串,若对不上的话服务端就拒绝访问。这就是csrf校验。

那么form表单如何进行csrf校验呢?

你只需要在你的form表单内写一个{% csrf_token %}就可以了

Ajax请求设置csrf_token的三种方式

示例:

urls.py

 urlpatterns = [ url(r'^transfer/', views.transfer), ]

settings.py

 STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

第三种方式的js文件(官方文档套用就行了)

 function getCOOKIE(name) { var COOKIEValue = null; if (document.COOKIE && document.COOKIE !== '') { var COOKIEs = document.COOKIE.split(';'); for (var i = 0; i  

views.py

 def transfer(request): if request.method =='POST': username = request.POST.get('username') target_user = request.POST.get('target_user') mOney= request.POST.get('money') print('%s 给 %s 转账 %s元' %(username,target_user,money)) return render(request,'transfer.html')

前端页面 transfer.html

      

总结:给CBV加装饰器 推荐使用模块method_decorator

csrf_exempt 只能给dispatch方法装

到此这篇关于Django csrf校验的实现的文章就介绍到这了,更多相关Django csrf校验内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

内容推荐:免费高清PNG素材下载
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4