前言
前段时间有个 researcher 回报说,他可以通过使用 X-Frame-Bypass 来绕过我们站点的 X-Frame-Options
机制,从而将我们的站点内嵌在他的网页上,从而造成 Clickjacking
对于 Clickjacking 来说,我们一般是使用设置 X-Frame-Options
header 来防止站点被第三方内嵌,具体可以看我之前的文章:
通过 X-Frame-Options
我们可以很好的防止我们的站点被第三方内嵌。
那么 X-Frame-Bypass 是怎么绕过 X-Frame-Options
这个限制的呢?
分析
我后面看了一下他的代码,他的方式其实很简单,既然 X-Frame-Options
是在 response 的 header 返回的,那么我只要在请求的时候,先去通过第三方服务将我想要的站点的内容取出来,然后只转发这个 body 体,不转发 header,就可以绕过了。
举个例子,比如我内嵌别人站点的代码是这样子的:1
<iframe src="https://api.codetabs.com/v1/proxy/?quest=https://test-example.com/my_test.html"></iframe>
这个逻辑很简单,就是这个 第三方 api.codetabs.com
, 会去请求 https://test-example.com/my_test.html
,并且将源代码返回,其实就是转发