在 Web 应用开发中,API 是应用程序和其他系统之间进行数据交互的主要方式。 跨域资源共享(CORS)是一种常见的处理跨域请求的技术,但同时也带来了一些安全性问题。我将分享 CORS 技术及其安全性问题。
跨域资源共享(CORS)
CORS 是指在浏览器端实现的机制,允许 Web 应用程序或 API 向不同的域名提供服务。当浏览器发起跨域请求时,服务器可以在响应中添加特定的头信息,告知浏览器该请求是否被允许。下面是一个简单的 CORS 响应头:
Access-Control-Allow-Origin: https://example.com
这条响应头中的 https://example.com
表示只允许来自 https://example.com
的请求访问当前 API。如果没有配置这个头信息,浏览器会阻止跨域请求,且无法获取 API 的返回结果。
虽然 CORS 技术方便了 API 的跨域访问,但同时也带来了一些潜在的网络安全风险。
CORS 安全性问题
-
CSRF 攻击(跨站请求伪造)
CSRF 攻击通常是针对需要登录态的应用场景。攻击者构造一个网页,通过重定向或者其他方式将其发送给用户浏览器,当用户登录了受害网站后,攻击者的想法就得以实现。CORS 正是这种情况的帮凶,因为 CORS 服务默认不校验请求来源,导致攻击者可以轻易构造请求并携带合法的 session id 等信息。
对于 CSRF 攻击问题,一些赢在了防范措施,例如增加 token 认证等。正确使用 token 认证,在站内逻辑认证的过程中,即使携带 sessionid 等敏感信息,攻击者仍不可能准确模拟一条合法的请求。
-
权限提升
如果 API 没有正确地验证跨域请求,攻击者有可能通过 AJAX 请求修改某些内容或数据偷取敏感信息。例如,一个具有某项管理权限的 Web 页面被注入了恶意 JavaScript 代码,并发送了跨域攻击请求,则攻击者可能访问到其他模块中保密内容,并进行操作。
防范 CORS 安全性问题
-
端口绑定同源策略:配置 Web 应用程序或 Web 服务器只监听本地端口、本地 IP 地址或特定域名,从而确保网络请求只会来自受信任的浏览器或应用程序。
-
增加 CORS 攻击屏蔽策略:增加 referer 校验、检查 HTTP 头信息中的申请者和请求域名是否一致等。
-
使用 token 认证:正确使用 token 认证,系统可以在站内逻辑认证的过程中进行校验,针对外部攻击请求时,token 就会无效。
CORS 技术虽然便利了 API 的跨域访问,但是也带来了一些安全性问题。为了避免潜在的网络安全问题,开发者需要认真审视当前 Web 应用程序的安全性,并且采取有效的安全防范措施。
如果你日常会用到 api 管理工具的话,不妨看看我目前参与的这个开源项目,Postcat 开源的 API 管理工具,纯国产,免费的,主打插件生态,适合中小团队以及个人开发者使用,有 API 相关的核心功能。
目前在 Github 上 3.5 k star,如果你觉得这个项目还不错的话,不妨点个 star 支持一下~
Github:
https://github.com/Postcatlab/postcat
Postcat 核心功能:
-
API 文档管理:可视化 API 设计,生成 API 文档
-
API 测试:自动生成测试参数,自动生成测试用例,可视化数据编辑
-
插件拓展:众多插件扩展产品功能,打造属于你和团队的 API 开发平台
-
Mock:根据文档自动生成 Mock,或创建自定义 Mock 满足复杂场景
-
团队协作:既能实现 API 分享也能可以创建云空间共同协作
Postcat 优势:
-
免登录即可测试:省去繁琐的验证登录的操作
-
界面简洁:没有冗余的功能与复杂选项
-
免费:中小团队以及个人使用
-
丰富的插件:支持数据迁移、主题、API 安全等高达 30 款插件
-
国产:能更好的理解国内用户的需求,与开发团队沟通无障碍
-
完善的用户文档:跟着操作就能快速上手
多提 Issue !多反馈!
在使用过程中有任何疑问,可以进群交流,
也可以在线提 Issue(强烈推荐这种开源的方式),提问题本身就已经在贡献社区了: https://github.com/Postcatlab/postcat/issues