web安全之反向代理配置X-Frame-Options实现防盗链和防止点击劫持攻击

介绍

http响应头安全策略,从http头文件的方面,利用参数设置开启浏览器的安全策略,来实现相关的安全机制

X-Frame-Options  HTTP响应头是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<embed>或者<object>中展现的标记。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 点击劫持(clickjacking)攻击。
也就是说,X-Frame-Options是可以用来控制页面是否可以嵌入其他页面 (内容被嵌到别人的网站中去,并在上面加一个透明层,诱导用户点击),并且还能避免点击劫持(clickjacking);

(仅当访问的用户使用支持 X-Frame-Options 的浏览器时,此附加的安全性才会被提供)

劫持(clickjacking)攻击 介绍


语法

X-Frame-Options 有三种可配置值:

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com

allow-from设置多域名的方式1 (允许多个域名iframe嵌套,注意这里是用逗号分隔)
X-Frame-Options: allow-from https://example.com,https://example1.com,https://example2.com

allow-from设置多域名的方式2
X-Frame-Options: allow-from https://example.com
X-Frame-Options: allow-from https://example1.com
X-Frame-Options: allow-from https://example2.com

语法说明

字段 描述 备注
X-Frame-Options: deny 该页面不允许在 frame 中展示,
即便是在相同域名的页面中嵌套访问也不允许。
deny、sameorigin、allow-from
仅仅允许使用一种配置
X-Frame-Options: sameorigin 该页面可以在相同域名页面的 frame 中嵌套访问 deny、sameorigin、allow-from
仅仅允许使用一种配置
X-Frame-Options: allow-from https://example.com/ 该页面可以在指定来源的 frame 中嵌套访问 1.deny、sameorigin、allow-from
仅仅允许使用一种配偶者


示例

配置 Apache

配置 Apache 在所有页面上发送 X-Frame-Options 某个响应头,需要把下面这行添加到 'site' 的配置中

Header always set X-Frame-Options "SAMEORIGIN"

配置好后,可能重启Apache2失败,原因是没有安装headers模块
执行命令:# a2enmod headers 即可安装headers模块
安装后可以在/etc/apache2/mods-enabled/header.load 目录下看到headers.load模块可用


配置 Nginx

配置 Nginx 发送 X-Frame-Options 某个响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

add_header X-Frame-Options SAMEORIGIN always;


允许多个域名iframe嵌套

add_header X-Frame-Options: allow-from https://example.com
add_header X-Frame-Options: allow-from https://example1.com
add_header X-Frame-Options: allow-from https://example2.com

或者

注意这里是用逗号分隔:
add_header X-Frame-Options "ALLOW-FROM http://example.com,https://example1.com,https://example2.com";



配置 IIS

配置 IIS 发送 X-Frame-Options 某个响应头,添加下面的配置到 Web.config 文件中:

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>


配置 HAProxy

配置 HAProxy 发送 X-Frame-Options响应头, 添加下面这行到 front-end, listen, or backend 配置中:

rspadd  X-Frame-Options:\ SAMEORIGIN

参考

[互联网健康与隐私保护的非营利组织Mozilla X-Frame-Options#语法]

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Frame-Options#语法

[nginx >> Module ngx_http_headers_module]

http://nginx.org/en/docs/http/ngx_http_headers_module.html

posted @ 2022-07-19 15:55  爱折腾的大臭臭  阅读(3557)  评论(0编辑  收藏  举报