在 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 安全性问题
1. CSRF 攻打(跨站申请伪造)
CSRF 攻打通常是针对须要登录态的利用场景。攻击者结构一个网页,通过重定向或者其余形式将其发送给用户浏览器,当用户登录了受益网站后,攻击者的想法就得以实现。CORS 正是这种状况的鹰犬,因为 CORS 服务默认不校验申请起源,导致攻击者能够轻易结构申请并携带非法的 session id 等信息。
对于 CSRF 攻打问题,一些赢在了防范措施,例如减少 token 认证等。正确应用 token 认证,在站内逻辑认证的过程中,即便携带 sessionid 等敏感信息,攻击者仍不可能精确模仿一条非法的申请。
2. 权限晋升
如果 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