Django---AJAX&&MVC&&MTV模式&&CSRF

AJAX

AJAX(Asynchronous Javascript And XML)翻译成中文就是’异步Javascript和XML’.即使用Javascriot语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)还有JSON数据.
AJAX还有一个最大的特点就是,当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新.这一特点给用户的感受是在不知不觉中完成请求和响应过程.
应用场景:
1.搜索引擎关键字
2.注册时信息校验
在这里插入图片描述

1.XML语言

HTML用于显示数据而XML用于保存和传输数据;
XML在保存结构化和层次化的数据比较有优势;
例如 中国有北京和上海两个直辖市,每个市又有2个区,具有结构的数据xml语言保存很有优势

在这里插入图片描述
在这里插入图片描述

2.JSON语言

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON去掉多余XML标签元素,只返回有效数据部分,是一种更优的方案
Json中数据格式分成两种:对象格式的数据和数组格式的数据

对象格式:{key:value,key:value,key:value}
键:必须是字符串常量{name:‘张三’}和{‘name’:‘张三’}是等价的;
值:加不加引号,是有区别的,不加引号是变量,加引号常量字符串
键值对之间使用 ','分开, 键值之间用 ‘:’

数组格式:[值1,值2,值3] 例如[‘zs’,‘ls’,‘ww’]

组合后复杂格式:
[{name:‘aaa’}, {name:‘bbb’}, {name:ccc}] 表示三个对象数组

3.ajax使用
案例:使用ajax 来验证用户名是否已经被注册过了。
在这里插入图片描述

二.MVC和MTV模式

在这里插入图片描述

2、MVC

MVC模式就是把web应用分为模型(M),控制器©,视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。
M:model 模型(django中models.py文件),与数据库进行交互。
V: view 视图(django中templates目录),产生html页面。
C:controller 控制器(django中urls.py和views.py文件),接收请求,进行处理,与M和V进行交互,返回响应。
2、MTV
Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:

Model(模型):负责与数据库进行交互。
Template(模版):产生html页面。
View(视图):负责业务逻辑,并在适当的时候调用Model和Template,返回响应。

3、使用MVC和MTV的好处
将业务逻辑、数据模型、用户界面都分离出来。实现了解耦合。

三、CSRF

CSRF:CSRF跨站点请求伪造(Cross—Site Request Forgery)CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。

CSRF攻击攻击原理及过程如下:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
    2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  2. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
  3. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

CSRF防御:
现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)。

  1. 用户访问某个表单页面。

  2. 服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。

  3. 在页面表单附带上Token参数。

  4. 用户提交请求后, 服务端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则非法请求。

这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构造一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。

token字符串的前32位是salt, 后面是加密后的token, 通过salt能解密出唯一的secret。
django会验证表单中的token和cookie中token是否能解出同样的secret,secret一样则本次请求合法。

猜你喜欢

转载自blog.csdn.net/weixin_44111377/article/details/90814364