CORS漏洞(1):前置知识


cors跨域资源共享漏洞的前置知识:同源概念、同源要素、跨域、JSONP等基础内容。

CORS漏洞(1):前置知识 😊

1:前置知识-同源策略:

1.1 产生原因:

同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。它的存在可以保护用户隐私信息,防止身份伪造等(读取Cookie)。

1.2 含义:

同源要: 协议、域名、端口三个都要相同,缺一不可才叫同源。

同源策略用于限制应用程序之间的资源共享,确保一个应用里的资源只能被本应用的资源所访问。

如果要跨域通信,必须要引入跨域资源共享,如果没有正确配置,就会导致漏洞产生。

即使是同一个ip,不同域名也不是同源,这样的话同源策略里允许发出请求,但是不允许访问响应。

1.3 同源实例:

http://test.com/a/123.html

http://test.com/a/asd.html  同源  路径不同
http://test.com/abcvb/123.html 同源 路径不同
http://test.com/abc/123458.html 同源 路径不同
https://test.com/a/1234.html 不同源 协议不同
http://test.com:88/a/1234.html 不同源 端口不同
http://test.com:82/a/1234.html 不同源 端口不同
http://bbb.test.com/a/1234.html 不同源 域名不同,子域名不算同源

2:跨域

由于同源策略的存在【规定不同域的客户端脚本如果没有明确授权允许执行,不能读写另一方的资源。同协议,同端口,同主机名的两个URL才能被认为同源。】,所以如果要跨域通信,必须要引入跨域资源共享 CORS 。

有一点必须要注意:跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果【返回包响应码还是200,】,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。

跨域的解决方案是跨域资源共享。

2.1 原理

服务器设置Access-Control-Allow-Origin HTTP响应头之后,浏览器将会允许跨域请求。

CORS是HTML5标准提出的跨域资源共享(Cross Origin Resource Share),支持GET、POST等所有HTTP请求。

CORS需要服务器端设置Access-Control-Allow-Origin头,否则浏览器会因为安全策略拦截返回的信息。

3:常见跨域解决方案

产生于浏览器的同源策略,不同域名、不同端口、不同协议都会构成跨域;但在实际的业务中,很多场景需要进行跨域传递信息,这样就催生出多种跨域方法。

3.1 CORS 跨域资源共享

3.2 JSONP

JSONP 不是一门编程语言,也不是什么特别的技术,它更像一个漏洞,程序员可以利用这个漏洞,实现跨域(可以简单理解为跨域名)传输数据。虽然 JSONP 与 JSON 看起来很像,但它们却是完全不同的。

4:跨域威胁与漏洞

引入跨域资源共享之后,如果没有正确配置(或者由于实际业务场景要解决跨域传递信息,会催生很多跨域安全问题),就会导致漏洞产生。

在不同的业务场景下,各有适合的跨域方式。跨域解决了一些资源共享、信息交互的难题,但是有的跨域方式可能会带来安全问题,如jsonp可导致水坑攻击,<img>等标签会被用来进行xss或csrf攻击。所以,在应用跨域的场景,需要格外注意安全问题。

参考链接:

优秀博客文章 | javascript跨域方法总结

Cors 跨域漏洞学习与复现 by Redis安全


文章作者: highgerms
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 highgerms !
 上一篇
CORS漏洞(2):跨域资源共享漏洞 CORS漏洞(2):跨域资源共享漏洞
CORS的出现是为了弥补同源策略的不足,它是一种用来绕过同源策略来实现跨域资源访问的一种技术。
2023-02-01
下一篇 
油猴脚本编写初探:自动登录下载Oracle产品 油猴脚本编写初探:自动登录下载Oracle产品
Oracle产品(JDK和Weblogic等)每次下载之前都要登录,真是可恶啊,很麻烦,利用油猴脚本将这一系列过程脚本化(无需注册和登录),以后都能轻松登录。😳😳😳
  目录