安全测试 之 常见安全漏洞:CORS

1. 背景

  • 安全测试定义:安全测试,是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程。
  • 目的:通过对系统进行全面的脆弱性安全测试,发现系统未知的安全隐患并提出相关建议,确保系统的安全性。安全性一般分为应用程序级别和系统级别,区别如下:

(1)应用程序级别:包括对应数据或业务功能的访问,核实应用程序的用户权限只能操作被授权访问的那些功能或数。
(2)系统级别:包括对操作系统的目录或远程访问,主要核实具备系统和应用程序访问权限的操作者才能访问系统和应用程序

2. 安全漏洞分类

  • 安全漏洞根据客户端与服务器端的分布,分为:

2.1 客户端

  • 钓鱼
  • 案链
  • XSS
  • 点击劫持
  • CSRF
  • URL 跳转

2.2 服务端

  • SQL注入
  • 命令注入
  • 文件上传漏洞
  • 服务器请求伪造(SSRF)
  • 反序列化漏洞
  • 命令执行漏洞
  • 文件包含漏洞
  • 逻辑漏洞

3. 安全漏洞详解

3.1 CORS

CORS,全称为 Cross-Origin Resource Sharing(跨域资源共享),是一种基于HTTP协议的机制,用于解决浏览器的同源策略限制所带来的跨域问题。同源策略是浏览器为了保护用户信息安全而实施的一种安全策略,它规定Web浏览器只允许脚本访问与其加载页面同源(即协议、域名和端口相同)的资源。当一个网页尝试从不同源的服务器请求资源时,如果没有适当的措施,浏览器会阻止这种跨域请求,以防止恶意网站读取另一个网站的数据。

3.1.1 同源策略

定义:同源(Same-Origin)是指在浏览器中,两个URL具有相同的协议、域名和端口号。为了保障安全,浏览器在同源策略(Same-Origin Policy)下,限制不同源的网页之间的资源访问。具体来说,如果两个URL在协议(如HTTP或HTTPS)、域名(如example.com)和端口号(如80或443)这三方面完全一致,则它们被认为是同源的

(1)同源策略的重要性

同源策略是浏览器的一种安全机制,用于防止恶意网站通过脚本操作用户的敏感数据。例如,它可以防止一个恶意网页读取另一个网页的cookie或LocalStorage数据。

(2)绕过同源策略的技术

尽管同源策略限制了跨域访问,但有一些合法的方法可以安全地绕过这些限制,例 :

  • CORS(跨域资源共享):允许服务器设置特定的HTTP头,明确允许哪些源可以访问
  • 服务器代理:通过服务器中转请求,以避免前端直接进行跨域请求。

3.1.2 跨域

例如:你有一个运行在 http://example.com 上的前端应用,这个应用需要从 http://api.weather.com 获取天气数据

过程:

(1) 前端请求:
  • 用户打开浏览器访问 http://example.com。
  • 应用中有一个按钮,用户点击按钮后,前端应用将向 http://api.weather.com 发起请求,获取天气数据。
(2) 跨域问题:
  • 由于 http://example.com 和 http://api.weather.com 是不同的域,直接请求会被浏览器的同源策略阻止
(3). 服务器配置CORS :
  • http://api.weather.com 的服务器配置了CORS,允许来自 http://example.com 的请求
  • 具体来说,服务器在响应头中设置了 Access-Control-Allow-Origin 为 http://example.com,从而告诉浏览器这个请求是被允许的
(4). 请求成功:
  • 浏览器检测到响应头中的CORS设置,允许此次跨域请求
  • 天气数据成功返回到前端应用,并显示在用户界面上,比如展示当前的温度和天气状况。

3.1.2 cors

(1) 定义
  CORS:(Cross-origin resource sharing)跨域资源共享,CORS是一种机制,这种机制通过在http头部添加字段,通常情况下,web应用A告诉浏览器,自己有权限访问应用B。这样就可以解决跨源的问题了
(2) 解决方法
  直接在服务器配置里面设置返回 或 Php等接口统一返回如下包头,通过设置http头部字段,让客户端有资格跨域访问资源。通过服务器的验证和授权之后,浏览器有责任支持这些http头部字段并且确保能够正确的施加限制Access-Control-Allow-Origin: 指定的域名
(3) bug样例和截图

在这里插入图片描述

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
跨域资源共享(Cross-Origin Resource Sharing,简称CORS)是一种机制,用于在浏览器中处理跨域请求。当一个网页的源(origin)与请求的目标资源的源不一致时,浏览器会执行CORS机制来确定是否允许该请求。 CORS错误通常指的是在进行跨域请求时出现的问题。以下是一些常见CORS错误: 1. 同源策略限制:浏览器默认情况下,不允许通过XMLHttpRequest或Fetch API发送跨域请求。如果尝试发送跨域请求,浏览器会阻止该请求,并抛出CORS错误。 2. 预检请求失败:对于某些复杂的跨域请求(例如带有自定义头部信息或使用特殊HTTP方法的请求),浏览器会先发送一个预检请求(OPTIONS请求)来检查服务器是否允许实际请求。如果预检请求失败,浏览器会抛出CORS错误。 3. 服务器未正确配置CORS:服务器需要在响应中添加一些特定的HTTP头部信息来告知浏览器允许跨域请求。如果服务器未正确配置CORS,浏览器会抛出CORS错误。 解决CORS错误的方法包括: 1. 在服务器端正确配置CORS:服务器需要在响应中添加`Access-Control-Allow-Origin`头部信息,指定允许访问的源。还可以添加其他CORS相关的头部信息,如`Access-Control-Allow-Methods`和`Access-Control-Allow-Headers`。 2. 使用代理服务器:可以通过设置一个代理服务器来转发请求,使得请求变为同源请求,从而避免CORS问题。 3. JSONP:如果只是需要获取数据而不涉及其他类型的请求,可以考虑使用JSONP(JSON with Padding)来进行跨域请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值