DVWA系列 - 额外内容1:同源策略与同站策略的简单理解

前言

在尝试 DVWA 的 CSRF 的部分时,偶然学习到了同站策略,感觉与同源策略很相似,因此再来整理下,作为对 DVWA系列3:CSRF 的一些补充。

同源策略 和 跨域

同源策略,即 Same origin policy,是一种约定,它是浏览器最核心也最基本的安全功能。

举个例子来说明。假定 A 是一个网站,B 是部署在后端的程序,如果它们的 协议域名端口 都相同,那么认为 A、B 是同源的。那么可以在 A 中正常请求 B 的资源,不跨域。如果其中有一个不同,则在 A 中请求 B 的资源是跨域的,需要在 B 中设置允许(某些)网站跨域。是否允许网站解析跨域请求结果一般由后端(服务端)决定。

但是,<script>、<img>、<link>这些包含 src 属性的标签可以加载跨域资源

同站策略 和 跨站

Same site policy。规则比同源策略宽松一些,只要二级域名相同就是同站(二级域名指 .com 这种顶级域名的下一级,如 http://test.com)。

举个例子来说明。假定 A、B 是两个网站。用户访问 A 时,获得了 Cookie,就叫 C1 吧。(在现在浏览器的环境下,如 Chrome 109)如果 A、B 两个网站是同站的,则用户访问 B 时,也会自动携带 Cookie C1。否则跨站,不会自动携带。

后记

怎么发现同站问题的呢?因为最一开始在 DVWA系列3:CSRF 部署“恶意网站”时,因为贪图方便,将 “恶意网站” 部署在了与 DVWA 同一台虚拟机上。随后在现在的 Chrome 109 和 之前的 Chrome 78 中访问,都携带了 Cookie。后来看到了这篇文章,才发现是因为部署在了一台机器上,没有违反同站策略时,会自动携带响应 Cookie。

参考

chrome samesite测试