浏览器 随笔 跨域资源共享

0. 最近发现firefox在linux下有点迷人…

一篇非常完备的博客&demo
浏览器同源策略&资源跨域
js跨域&jsonp
跨域资源共享 CORS 详解 by 在别的博客中巧遇的阮总
Springboot&Nginx实现服务端跨域的Demo
Springboot 跨域解决方案
HttpOnly Cookie


CSRF(Cross-site request forgery)跨站请求伪造

XSS (Cross Site Scripting) 跨站脚本攻击


canvas跨域问题(超纲了…)

1. 何为浏览器的同源策略

同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

1. 为什么会出现跨域的问题(如果没有同源策略会出现哪些问题)

因为CSRF攻击,即使有了同源策略限制,但cookie是明文的。
CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!
攻击者盗用了你的身份,以你的名义发送恶意请求。

XSS 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。

2. 绕过同源限制请求接口

jsonp
	已知浏览器的跨域是对js的限制,html标签的src属性是没有限制的
	https://www.cnblogs.com/kongxianghai/p/5350079.html
	协议、域名、端口相同则视为同源
		IP与DNS解析后的域名也互为不同源
		这个也算跨域 主域名是http://crossdomain.com:9099,子域名是http://child.crossdomain.com:9099
	跨域脚本调用 传递数据 动态跨域回调函数
	JSONP只能发GET请求
iframe+form
	post
cors
	w3c提出的 跨域资源共享 Cross-origin resource sharing
	http://www.ruanyifeng.com/blog/2016/04/cors.html
	分为两类:
		简单请求
			head get post
		非简单请求
			head有...以外的字段
nignx
	代理转发一层,转换成后端的域名

3. 绕过同源限制访问Dom节点

window.postMessage() 
	HTML5的一个接口,专注实现不同窗口不同页面的跨域通讯。
document.domain
	子主域名的情况
canvas
	详见上面的链接

4. Http协议提供的一些cookie的安全选项

HttpOnly是加在cookies上的一个标识,用于告诉浏览器不要向客户端脚本(document.cookie或其他)暴露cookie。

另外还有一个安全标识可以强制浏览器发送cookie的时候采用安全通道,比如HTTPS,可以防止被监听。尤其是在HTTPS连接被一些工具(比如SSLStrip等)降级到HTTP。

5. 解决方法

5.1 后端解决方案

5.1 springboot注解方式

@CrossOrigin
支持方法(某个请求)、控制器(一系列请求)粒度

5.2 从spring mvc的角度入手

支持全局粒度

注入自定义的java config类
,并extends WebMvcConfigureAdapter
,并重写addCorsMapping()

5.3 拦截响应内容

全局粒度的

对response对象加cors相关的header

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值