前言
SOP(同源策略)可以说是Web安全的最核心的安全机制,一旦被绕过,就可能导致重大的安全漏洞。
SOP原理
正如我们所知道的,所有的浏览器在试图访问来自不同来源的资源时都会施加一些限制。
当然,我们可以播放音乐和渲染图像来自不同的域,但是由于同源策略的限制,我们将无法读取这些资源的内容。
例如,我们可以在canvas上绘制图像,但除非同源,否则我们无法使用getimagedata读取图片像素信息。同样的规则适用于脚本。我们可以自由加载外部脚本在不同的域,但如果有一个错误,我们将无法获得任何细节,因为错误本身可能泄漏信息。换句话说,浏览器通过抑制错误细节试图避免资源信息的泄漏。
比方说,我们在cracking.com.ar渲染brokenbrowser.com的一个脚本,就像这样:
---- Main page on cracking.com.ar ----
<script src="brokenbrowser.com/errorscript.js"></script>
---- Script errorscript.js hosted in brokenbrower.com ----
this_is_an_error();