CORS跨域请求共享

news/2025/1/15 17:27:12/

image.png

参考文章:

https://xz.aliyun.com/t/12001?time__1311=GqGxRGiti%3Dd052x%2BxCwx7qGIxpbDulE%3DoD
https://blog.csdn.net/weixin_46622976/article/details/128452494

跨域资源共享

自己的理解,一般来讲,我们使用未授权的接口漏洞,都是因为一些接口并没有做一些接口的权限鉴定,因此可以看到我们通常可以通过接口访问到很多的敏感数据。但是如果说执行接口进行了权限的验证。我们还可以利用同源策略的配置错误,可以类似csrf漏洞一样,诱导用户点击对应的链接,使用用户的身份验证信息去访问对应的一些敏感站点的信息。这就是cors漏洞。

一般情况:

  • 比如前后端分离的情况,前后端域名不同,但是前端会需要用到后端的接口,发送ajax请求
  • 电商网站加载第三方快递网站的物流信息
同源策略

同源策略 (Same Origin Policy)

  • 协议
  • 域名
  • 端口

​ 同时满足这三种条件就是同源,当存在两个站点,其中有一项不满足相同条件的时候,我们即可说这两个站点不是同源站点,而当其中一个站点想请求另外一个站点的资源的时候我们边称它为跨域请求,而由于安全考虑,跨域请求会受到同源策略的限制

不受影响的标签

​ 在HTML中<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址 在这些标签中有以下的标签不受同源策略的限制

  1. script
  2. img
  3. iframe
  4. link
  5. css

在同源策略(Same-Origin Policy)中,不同源(即不同协议、主机或端口)之间的资源访问受到限制,以增强安全性。不过,某些标签和资源类型有特定的规则:

  • <script>:不受同源策略限制,可以从不同源加载 JavaScript 文件。这使得从外部源加载脚本成为可能,但仍需注意跨站点脚本攻击(XSS)的风险。

  • <img>:不受同源策略限制,可以从不同源加载图片。这使得网页能够显示来自不同源的图像,但不会影响其他资源或进行脚本操作。

  • <iframe>:同样不受同源策略限制,可以嵌入不同源的网页。这允许在一个网页中显示来自不同站点的内容,但需要小心防止点击劫持等安全问题。

  • <link>CSS:在加载外部样式表时不受同源策略限制。网页可以链接到来自不同源的 CSS 文件,以应用样式。

他们是加载外部的资源进行使用,不受到同源策略限制。但是可能就是要主要加载的xss漏洞,可能会有些许影响。因为我感觉你要是加载外部资源感觉也没有什么大的危害。但是话又说回来,如果说万一遇到了一种情况攻击者可以控制对应的这些标签加载的资源,那么就可能有危害了。但我感觉几乎不可能,难以利用。(个人见解)。

请求头判别

image.png

Access-Control-Allow-OriginAccess-Control-Allow-Credentials结果
attack 站点true存在漏洞
*true不存在漏洞
nulltrue存在漏洞
<safe_host> Nulltrue不存在漏洞
  • 其中Access-Control-Allow-Origin表示允许跨域访问的host
  • 如果想跨域传输cookies,需要Access-Control-Allow-Credentials设置为true,并且需要与XMLHttpRequest.withCredentials 或Fetch API中的Request() 构造器中的credentials 选项结合使用,例如使用XMLHttpRequest的时候需要将withCredentials的值设置为true

一般都是输入一个origin 查看返回包这两个响应头的情况去判定有无这个漏洞。

csrf和cors

其实一开始我就觉得这两个挺类似的,都是需要验证用户的授权凭证。
但是同源策略挡不住csrf,因为csrf是提交表单的,不是需要返回敏感信息的。
但是csrf的一些防护策略,对于cors是适用的,因为对于csrf来讲,cookie的授权凭据才是最重要的,而并非是同源策略。因此针对于origin进行过滤,samesite,csrf token ,双重身份验证都是对于防护cors非常有用的。
这一点可以参考我的 csrf 防护[[csrf#​防御策略]]

防护

[[csrf#​防御策略]]

  • Access-Control-Allow-Origin不应该设置为null,也不建议设置为*,做好设置成受信的站点
  • Access-Control-Allow-Methods的值可以控制尽量少一些,只留需要用到的请求方法

http://www.ppmy.cn/news/1526714.html

相关文章

Ruoyi Cloud K8s 部署

本文视频版本:https://www.bilibili.com/video/BV1xF4Se3Esv 参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/Ruo…

反射的应用

1、获取Class类对象 //1、Class.forName(类的全路径) Class<?> aClass1 Class.forName("com.itheima.d2_reflect.Student"); //2、类.class Class<Student> aClass2 Student.class; //3、对象.getClass() Class<? extends Student> aClass3 …

OpenHarmony鸿蒙( Beta5.0)RTSPServer实现播放视频详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…

Java学习线路(2024版)

Java 作为一门成熟、强大且灵活的编程语言&#xff0c;广泛应用于企业级开发、Web开发、移动开发、大数据等领域。随着技术的不断演进&#xff0c;Java 生态系统不断扩展&#xff0c;学习路径也随之更新。如果你想全面掌握 Java&#xff0c;从基础开始到精通&#xff0c;再到最…

【Elasticsearch系列六】系统命令API

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

一起对话式学习-机器学习02——机器学习方法三要素

【一】核方法 首先补充一下核方法&#xff0c;这应是机器学习分类中的内容。 什么是核方法呢&#xff1f;听起来很高级&#xff0c;但理解很简单&#xff1a; 官方定义&#xff1a;核方法是使用核函数表示和学习非线性模型的一种机器学习方法&#xff0c;可以用于监督学习和非监…

初学Linux(学习笔记)

初学Linux&#xff08;学习笔记&#xff09; 前言 本文跳过了Linux前期的环境准备&#xff0c;直接从知识点和指令开始。 知识点&#xff1a; 1.目录文件夹&#xff08;Windows&#xff09; 2.文件内容属性 3.在Windows当中区分文件类型是通过后缀&#xff0c;而Linux是通过…

C++ ——string的模拟实现

目录 前言 浅记 1. reserve&#xff08;扩容&#xff09; 2. push_back&#xff08;尾插&#xff09; 3. iterator&#xff08;迭代器&#xff09; 4. append&#xff08;尾插一个字符串&#xff09; 5. insert 5.1 按pos位插入一个字符 5.2 按pos位插入一个字符串 …