ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CSRS与JOSNP

2021-03-31 22:31:28  阅读:136  来源: 互联网

标签:CSRS 浏览器 跨域 同源 JSONP 请求 数据 JOSNP


同源策略

同源策略:一种约定,时浏览器最核心的安全功能,若缺少同源策略,浏览器功能将受到影响。可以说web是在同源策略基础上的,浏览器只是针对同源策略的一种实现。
不同源的客户端脚本在未授权的请求下,不能读写对方的资源像:DOM/COOKIE/SESSION

CORS

  • cors(原理与csrf相似)

跨域资源共享,是可以通过在HTTP中增加字段来告诉浏览器,那些不同来源的服务器是有权限来访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。
cors出现是为了弥补JOSNP等跨域常见的技术缺陷而提出的安全方面的跨域方案。允许浏览器像跨域服务器发出xmlhttprequest请求,从而克服Ajax只能同源使用的限制。
cors需要浏览器和服务器同时支持,相比较JSONP更加复杂,但是一般目前的浏览器都是需要进行相应配置,其通信过程都是浏览器自动完成,对于开发人员来说,与Ajax没区别,只会在发送跨域请求时在HTTP请求头加入一些字段验证:
关键字:
ACCESS-CONTROL-ALLOW-ORIGIN:指定那些域访问资源;若a访问b的资源,可以用此头来授权
ACCESS-CONTROL-ALLOW-CREDENTIALS:指定浏览器是否将使用请求发送cookie。只有allow-credentials标头设置为true时,才会发送cookie;
ACCESS-CONTROL-ALLOW-METHODS:指定可以使用的请求方式来访问资源。

  • 为什么要进行跨域

跨域本质就是绕过同源策略的严格限制,安全与实用往往有时候会有一定的矛盾性,开发人员更注重的是功能的开发使用,例如有时候同二级域名下的不同三级域名需要进行一些信息数据传输时,共享一些资源时,同源策略将其限制,但是又要实现该功能,此时就诞生了一些跨越请求的技术。

  • 跨域的应用场景:

比如后端开发完一部分业务代码后,提供接口给前端用,在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问的问题。
程序员在本地做开发,本地的文件夹并不是在一个域下面,当一个文件需要发送ajax请求,请求另外一个页面的内容的时候,就会跨域。
电商网站想通过用户浏览器加载第三方快递网站的物流信息。
子站域名希望调用主站域名的用户资料接口,并将数据显示出来。

  • 常见的跨域的标签
<script src=  ></script>
<img src= > 
<video src= ></video>
<audio src= > </audio>
<embed src=>
<iframe src= ><iframe>
<link rel="stylesheet"href=>
<applet code=></applet>
<object data= ></object>

在这里插入图片描述

JSONP

JSON是一种基于文本的轻量级的数据交换格式。
JSONP是一种协议,准确的说,它是JSON的一种使用模式,因为浏览器有同源策略的限制,像test1.com和test2.com之间是无法通信的,但是调用js文件,却不受同源的影响,并且src属性引入的文件都不受同源的限制,这也是同源策略为了方便留下的一个后门,所以要想把远程数据加载到web页面中,就得把复杂数据转换为js文件,注意JSON数据是被js(JS不受同源策略的影响)原生支持的,这样就可以把复杂数据转换成轻巧的json数据,但是注意JSONP只支持GET方式。

  • 组成

JsoNP的组成
JSONP两部分组成:回调函数和里面的数据。
回调函数是当响应到来时,应该在页面中调用的函数,一般是在发送过去的请求中指定。
JSONP跨域原理
利用< script>标签没有跨域限制的漏洞,网页可以从其他来源域动态获取JSON数据,JSONP跨域请求一定需要对方的服务器支持才可以。
通俗的讲,JSONP原理就是动态插入带有跨域url的< script>标签,把我们需要的json数据作为参数传入,通过一些逻辑把数据显示在页面上。

  • 实现流程

服务端必须支持jsonp,且拥有jso面p跨域接口(前提)
浏览器客户端声明一个回调函数,其函数名作为参数值,要传递给跨域请求数据的服务器,函数形参为要获取到的返回目标数据
创建一个< script>标签,把跨域的API数据接口加载到src属性,并且在这个地址向服务器传递该回调函数名
服务器会将数据返回到浏览器客户端,此时客户端会调用回调函数,对返回的数据进行处理

  • 安全漏洞(JSONP)

对于输入的callback函数名过滤不严格,导致输入的数据直接输出到前端造成XSS
JSONP劫持漏洞,由于对于来源域没有严格限制,因此来源于不安全的域的请求也会被响应

标签:CSRS,浏览器,跨域,同源,JSONP,请求,数据,JOSNP
来源: https://blog.csdn.net/ppbgi/article/details/115357106

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有