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

介绍

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

X-Frame-Options  HTTP&#x54CD;&#x5E94;&#x5934;&#x662F;&#x7528;&#x6765;&#x7ED9;&#x6D4F;&#x89C8;&#x5668;&#x6307;&#x793A;&#x5141;&#x8BB8;&#x4E00;&#x4E2A;&#x9875;&#x9762;&#x53EF;&#x5426;&#x5728;<frame>,<iframe>,<embed>或者<object>&#x4E2D;&#x5C55;&#x73B0;&#x7684;&#x6807;&#x8BB0;&#x3002;
&#x7AD9;&#x70B9;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x786E;&#x4FDD;&#x7F51;&#x7AD9;&#x6CA1;&#x6709;&#x88AB;&#x5D4C;&#x5165;&#x5230;&#x522B;&#x4EBA;&#x7684;&#x7AD9;&#x70B9;&#x91CC;&#x9762;&#xFF0C;&#x4ECE;&#x800C;&#x907F;&#x514D; &#x70B9;&#x51FB;&#x52AB;&#x6301;&#xFF08;clickjacking&#xFF09;&#x653B;&#x51FB;&#x3002;
&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;X-Frame-Options&#x662F;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x63A7;&#x5236;&#x9875;&#x9762;&#x662F;&#x5426;&#x53EF;&#x4EE5;&#x5D4C;&#x5165;&#x5176;&#x4ED6;&#x9875;&#x9762; (&#x5185;&#x5BB9;&#x88AB;&#x5D4C;&#x5230;&#x522B;&#x4EBA;&#x7684;&#x7F51;&#x7AD9;&#x4E2D;&#x53BB;&#xFF0C;&#x5E76;&#x5728;&#x4E0A;&#x9762;&#x52A0;&#x4E00;&#x4E2A;&#x900F;&#x660E;&#x5C42;&#xFF0C;&#x8BF1;&#x5BFC;&#x7528;&#x6237;&#x70B9;&#x51FB;)&#xFF0C;&#x5E76;&#x4E14;&#x8FD8;&#x80FD;&#x907F;&#x514D;&#x70B9;&#x51FB;&#x52AB;&#x6301;&#xFF08;clickjacking&#xFF09;&#xFF1B;

(&#x4EC5;&#x5F53;&#x8BBF;&#x95EE;&#x7684;&#x7528;&#x6237;&#x4F7F;&#x7528;&#x652F;&#x6301; X-Frame-Options &#x7684;&#x6D4F;&#x89C8;&#x5668;&#x65F6;&#xFF0C;&#x6B64;&#x9644;&#x52A0;&#x7684;&#x5B89;&#x5168;&#x6027;&#x624D;&#x4F1A;&#x88AB;&#x63D0;&#x4F9B;)
</object></iframe>

劫持(clickjacking)攻击 介绍

语法

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

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

allow-from&#x8BBE;&#x7F6E;&#x591A;&#x57DF;&#x540D;&#x7684;&#x65B9;&#x5F0F;1 (&#x5141;&#x8BB8;&#x591A;&#x4E2A;&#x57DF;&#x540D;iframe&#x5D4C;&#x5957;&#xFF0C;&#x6CE8;&#x610F;&#x8FD9;&#x91CC;&#x662F;&#x7528;&#x9017;&#x53F7;&#x5206;&#x9694;)
X-Frame-Options: allow-from https://example.com,https://example1.com,https://example2.com

allow-from&#x8BBE;&#x7F6E;&#x591A;&#x57DF;&#x540D;&#x7684;&#x65B9;&#x5F0F;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

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

语法说明

字段 描述 备注 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;

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

允许多个域名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 文件中:


  ...

  ...

配置 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#&#x8BED;&#x6CD5;
http://nginx.org/en/docs/http/ngx_http_headers_module.html

Original: https://www.cnblogs.com/linuxshare/p/16494406.html
Author: 爱折腾的大臭臭
Title: web安全之反向代理配置X-Frame-Options实现防盗链和防止点击劫持攻击

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573868/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis 缓存穿透、雪崩、击穿以及相关解决方案

    缓存流程: 缓存穿透: 什么是缓存穿透:是指 redis 和数据库都没有这个数据,大量请求该数据造成数据库挂掉,该请求一般是非正常用户 解决方案: 布隆过滤器:将数据库中所有的查询…

    Linux 2023年5月28日
    085
  • Linux命令篇-curl 命令

    curl 查看网页源码 自动跳转 显示头信息 通信过程 下载文件 断点续传 获取天气 curl 查看网页源码 直接在curl命令后加上网址,就可以看到网页源码。 $ curl ww…

    Linux 2023年6月13日
    0110
  • cpp-base

    1.cin&cout 2.两种注释方式 //注释方法1,’//’。用于单行注释 /* 注释方法2, 用于多行注释 */ &#x7279;&#x522B;&a…

    Linux 2023年6月7日
    0106
  • 什么是虚拟计算机集群

    这个问题来自近期几位网友的私信,他们不约而同问到一个问题:什么是虚拟计算机集群?Laxcus分布式操作系统是如何做的?下面就正式回答一下这个问题。 在我们传统的认知里,或者大家平常…

    Linux 2023年6月6日
    0108
  • 个人学习记录-Cpp基础-成员初始化列表

    https://blog.csdn.net/XIONGXING_xx/article/details/115553291https://blog.csdn.net/W_Y2010/…

    Linux 2023年6月6日
    095
  • shell 递归枚举文件并操作

    递归枚举文件并操作 #!/bin/bash CURDIR=$(cd $(dirname $0); pwd) export GOPATH=$CURDIR/.. echo GOPATH…

    Linux 2023年5月28日
    0104
  • OpenSSL测试-SM3

    任务详情 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 使用OpenSSL的命令计算你的8位学号的摘要值(SM3),提交截图(5’…

    Linux 2023年6月8日
    0114
  • Redis-Cluster实战–5.使用redis-cli安装

    Redis-Cluster实战–5.使用redis-cli安装 博客分类: redis 缓存 redis-cluster redisCluster指派槽cluster-infom…

    Linux 2023年5月28日
    0101
  • WPF 调试依赖属性变更方法

    本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法 在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的…

    Linux 2023年6月6日
    098
  • Shell Step by Step (4) —— Cron &amp; Echo

    6.脚本定时任务 <span class="hljs-preprocessor"># Example of job definition:</…

    Linux 2023年5月28日
    0138
  • Beyond Compare文件对比神器,快来给文件找茬!

    在工作中很多场景下都需要比对两个文件之间的差异,你是否还傻傻的同时打开两个文件,用眼睛一行一行的核对? 赶紧来试试这个神器Beyond Compare!!它可以快速的帮你找出两个文…

    Linux 2023年6月7日
    0109
  • 在Windows下使用CodeBlock使用libiconv第三方库

    在 Windows 下使用 CodeBlock 使用 libiconv 第三方库 1、 选择在Project—>Build options下: 2、 如下图添加libicon…

    Linux 2023年6月6日
    094
  • Java基础系列–07_String、StringBuffer和StringBuilder

    String类(1)字符串:字符串是 常量;它们的值在 创建之后不能更改,存储在堆中。如果字符串多次赋值,其实是每次重新赋值的时候程序都先在内存中寻找已开辟的空间是否存在该值;如果…

    Linux 2023年6月7日
    080
  • OpenStack RedHat搭建

    一、准备环境 控制节点及计算节点必须开启虚拟化引擎Intel VT-x或AMD-V,且控制节点未来将被复用为计算节点;虚拟机配置可根据实际情况进行调整;务必配置 DNS,否则安装过…

    Linux 2023年6月8日
    091
  • redis的另一个分支 keydb

    今天无意间发现了redis还有一个分支keydb 是多线程的,貌似在机器内核多的情况下效果比redis效果好 执行这些命令 在这之前先把redis关掉 sudo systemctl…

    Linux 2023年5月28日
    083
  • shell 下载aliplayer 的视频

    #!/bin/bash url="http://v.example.com/8dedaec32ca9415eaa8ccd423ee33bf3/" #下载视频索引…

    Linux 2023年5月28日
    0105
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球