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)

大家都在看

  • Linux运行Jar包方式

    1 运行Jar包 第一种方式 java -jar xxx.jar 最基本的方式,程序运行的信息会一直输出在控制台,ctrl+c中断或者关闭窗口时,程序中断执行。 第二种方式 jav…

    Linux 2023年6月7日
    0106
  • redis 基本信息查询

    在客户端可以用telnet命令 telnet ip port 再输入info 返回如下信息: 每个参数的含义: redis_version redis版本gcc_version g…

    Linux 2023年5月28日
    099
  • redis的另一个分支 keydb

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

    Linux 2023年5月28日
    083
  • jdk8 线程池策略

    在ThreadPoolExecutor中提供了4种线程的策略可以供开发者直接使用:•AbortPolicy策略:默认策略,如果线程池队列满了丢掉这个任务并且抛出RejectedEx…

    Linux 2023年6月8日
    0119
  • Java — 注解

    Java 注解(Annotation)又称为 Java 标注,是 Java5 开始支持加入源代码的特殊语法元数据。 Java 语言中的类、方法、变量、参数和包等都可以被标注。 Ja…

    Linux 2023年6月8日
    096
  • MySQL事务隔离级别

    MySQL事务隔离级别 事务 事务是由单独的一个或者多个SQL语句组成,是一个最小的不可再分割的单元,这一组操作里面的所有的执行,要么全部成功、要么全部不成功。如果有一个执行不成功…

    Linux 2023年6月6日
    0121
  • 数据结构和算法的关系

    针对Python数据结构与算法(裘宗燕版)中的第一章绪论最后的问题 数据结构 概念 数据与数据之间的结构关系(数组、队列、树、图等结构) 类别 分为 逻辑数据结构和 存储数据结构两…

    Linux 2023年6月7日
    0139
  • 部署solr服务

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 一、S orl单机部署 准备:solr5.5、tomcat8.5、jdk1.8 2.复制./solr-5.5.0/s…

    Linux 2023年6月14日
    0123
  • 用redis解决多用户同时编辑同一条数据问题

    1,场景再现 场景:总公司可以给分公司下发今年的规划任务(可能只是写了个规划大纲),分公司收到后,进行详细的规划补充,然后提交。 比如规划表: CREATE TABLE sys_p…

    Linux 2023年5月28日
    086
  • 内存分配-slab分配器

    1 slab综述 1.1 slab分配器产生的背景 类似 task_struct mm_struct 等结构被内核中被频繁分配和释放,同时创建和销毁这些结构会产生一定的开销(ove…

    Linux 2023年6月7日
    086
  • BKT的胡测题解:第一套第一题parts

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/Grharris/p/11530239.htmlAuth…

    Linux 2023年6月6日
    096
  • Mysql 5.7开启binlog日志

    Mysql 5.7开启binlog日志 前言 binlog是MySQL的二进制日志,并且是MySQL中最重要的日志。binlog记录了对MySQL数据库执行更改的所有操作,包括对数…

    Linux 2023年6月6日
    0107
  • 解决 Docker Push Skipped foreign layer 的错误

    引言当Docker推送基于Windows镜像到私有仓库的时候会遇到 Skipped foreign layer的问题。 docker push 192.168.2.30:5000/…

    Linux 2023年6月14日
    0108
  • 一道诡异的考试题

    题目: 给定$a$张黑牌,$b$白牌,甲,乙两人按以下顺序抽牌: 甲抽一张,乙抽一张,然后弃去一张,然后重复以上过程。 先抽到黑牌者胜,求甲和乙获胜的概率$mod 10045358…

    Linux 2023年6月6日
    088
  • apache 配置与使用(centos)

    apache 配置与使用 1.默认虚拟主机 虚拟主机(共享主机,又称虚拟服务器)是一种在单一主板或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术,虚拟主机之间完全独立…

    Linux 2023年6月6日
    0117
  • cube.js 即将使用cube store 替换redis

    随着发着cube store 的能力已经很强大了,官方目前计划使用cube store 替换redis cube.js 内存查询参考 官方对于redis 的说明 官方觉得redis…

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