跳到主要内容

跨域到底跨了什么域

· 阅读需 2 分钟
素明诚
Full stack development

在网络编程和 Web 开发的背景下,"域"(Domain)通常指的是互联网上的一个命名区域,这通常对应于一个域名(如 sumingcheng.com)。但在涉及跨域(Cross-Origin)问题时,"域"或"源"(Origin)的概念更加具体,它不仅包括域名,还包括协议(如 HTTP 或 HTTPS)和端口号。这三部分共同构成了一个完整的"源"。

所以,跨域这个词我们不妨理解成跨源,那么源就好解释了。

同源策略

当涉及到同源策略时,只有当这三个部分(协议、域名、端口号)完全一致时,两个 URL 才被认为是来自同一个"源"。如果任何一部分不同,那么它们就属于不同的"源"。

为什么要有同源策略?

核心是为了保证服务器的安全,例如

跨站脚本攻击(XSS)

  • 如果浏览器允许脚本自由地访问跨源数据,恶意网站就可以通过注入脚本来窃取其他网站的敏感信息(如 cookies、session tokens 等)。这种攻击通常在用户不知情的情况下发生,可能导致隐私泄露和安全风险。

跨站点请求伪造(CSRF)

  • 如果跨源请求没有适当的限制和验证,攻击者可以伪造用户的请求,例如在用户登录银行网站时,恶意网站可能在后台发起转账请求。这种攻击利用了用户的登录状态和网站对用户身份的信任。

保护用户数据

  • 同源策略阻止了一个源的网页访问另一个源的敏感数据,包括存储在浏览器中的数据,如 LocalStorage、IndexedDB 和 Web SQL 数据库。

隔离潜在恶意内容

  • 限制脚本跨源通信有助于隔离和限制潜在的恶意内容,提高网站和用户的整体安全性。