HTTP报文头—安全问题

Mirror王宇阳

2019-10-01

参考:MDN技术文档;《http头安全相关的选项_by`myh0st》

认识HTTP协议

https://www.cnblogs.com/wangyuyang1016/p/10421073.html

HTTP是一个可扩展的协议~

X-Frame-Options:

X-Frame-Options HTTP响应头是用来给浏览器 指示允许一个页面 可否在 <frame> <iframe> <embed>或者<object>中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 点击劫持攻击。

frame标签:框架标签,放置一个HTML文档(页面)

iframe标签:内联框架标签,在一个HTML页面中显示(插入)另一个HTML页面

embed标签:音频元素标签,插入一个音频元素

object标签:定义外部内容的容器标签

  • 语法:

    DENY:表示该页面不允许在frame中展示,即便在相同域名的页面中嵌套也不可以。

    SAMEORLGIN:表示该页面可以在相同域名页面的frame中展示

    ALLOW - FROM:表示该页面可以在指定来源的frame中展示

    如果设置DENY,该页面在任何地方的frame中都无法加载;设置SAMEORLGIN那么就可以在同域名页面中的frame标签中嵌套并加载该页面

配置Web容器:

  • 配置Apache,所有页面上发送X-Frame-Options响应头,需要在site中配置如下:
Header always append X-Frame-Options SAMEORLGIN
  • 配置Nginx,所有页面上发送X-Frame-Options响应头,在http,server或者locationp配置中添加:
add_header X-Frame-Options SAMEORLGIN;
  • 配置IIS,在Web.config文件中添加:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORLGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>

*具体的技术文档请参考:MDN_X-Frame-Options

MDN Web Docs 是一个提供 Web 技术和促进 Web 技术软件的不断发展的学习平台,包括:


X-Content-Type-Options:

X-Content-Type-Options HTTP响应首部相当于一个提示标志,服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探(防止用户修改MIME上传非法文件类型或利用解析来执行JavaScript……)行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。

通过X-Content-Type-OptionsHTTP响应头可以禁止浏览器的类型猜测行为;

  • 语法:
X-Content-Type-Options:nosniff
  • 指令:(nosniff是固定的

    nosniff:(下面两种情况会被禁止

    ​ 请求类型style但是MIME类型不是text/css

    ​ 请求类型script但是MIME类型不是application/x-javascript


Access-Control-Allow-Origin:

Access-Control-Allow-Origin 响应头指定了该响应的资源是否被允许与给定的origin共享。跨原始资源共享(CORS)允许网站在它们之间共享内容,为了使网站之间安全的跨域获取资源,可以通过设置Access-Control-Allow-Origin来允许指定网站来跨域获取本地资源。

当目标页面的response中包含Access-Control-Allow-Origin这个header,并且value有对方的域名,浏览器才允许目标获取页面的数据。

只允许”10.10.10.10“访问自己本地资源

Access-Control-Allow-Origin: http://10.10.10.10
  • 语法

    Access-Control-Allow-Origin: *
    Access-Control-Allow-Origin: <origin>
  • 指令

    *

    对于不需具备凭证(credentials)的请求,服务器会以“*”作为通配符,从而允许所有域都具有访问资源的权限。

    <origin>

    指定一个可以访问资源的URL。


X-XSS-Protection:

HTTP X-XSS-Protection 响应头是Internet Explorer,Chrome和Safari的一个功能,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。虽然这些保护在现代浏览器中基本上是不必要的,当网站实施一个强大的Content-Security-Policy来禁用内联的JavaScript ('unsafe-inline')时, 他们仍然可以为尚不支持 CSP 的旧版浏览器的用户提供保护。

CSP:内容安全策略

​ 用于检测和减轻用于Web站点的特定类型的攻击,例如XSS和SQL注入;基于Content-Security-Policy实现策略

  • 语法:

    X-XSS-Protection: 0
    X-XSS-Protection: 1
    X-XSS-Protection: 1; mode=block
    X-XSS-Protection: 1; report=<reporting-uri>

    0

    禁止XSS过滤。

    1

    启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。

    1;mode=block

    启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。

    1; report=<reporting-URI> (Chromium only)

    启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri指令的功能发送违规报告。


HTTP Strict Transport Security(HSTS):

HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP

一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://foo.com或者直接foo.com。

这样存在中间人攻击潜在威胁,跳转过程可能被恶意网站利用来直接接触用户信息,而不是原来的加密信息。

网站通过HTTP Strict Transport Security通知浏览器,这个网站禁止使用HTTP方式加载,浏览器应该自动把所有尝试使用HTTP的请求自动替换为HTTPS请求。

注意: Strict-Transport-Security 在通过 HTTP 访问时会被浏览器忽略; 因为攻击者可以通过中间人攻击的方式在连接中修改、注入或删除它. 只有在你的网站通过HTTPS访问并且没有证书错误时, 浏览器才认为你的网站支持HTTPS 然后使用 Strict-Transport-Security 的值 .

  • 语法:

    Strict-Transport-Security: max-age=<expire-time>
    Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
    Strict-Transport-Security: max-age=<expire-time>; preload
  • 指令:

    max-age=<expire-time>

    设置在浏览器收到这个请求后的秒的时间内凡是访问这个域名下的请求都使用HTTPS请求。

    includeSubDomains [可选]

    如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名。

    preload [可选]

    查看 预加载 HSTS 获得详情。不是标准的一部分。

*HTTP Strict Transport Security(HSTS)参考文档


Content Security Policy*

CSP是一个计算机的安全标志,主要用来防止XSS、点击劫持、SQL注入等攻击;CSP通过定义运行加载脚本的位置和内容防止恶意代码的加载。

内容安全策略CSP技术文档

  • 用法:

    CSP由HTTP头的Content-Security-Policy定义,每一个HTTP请求最多返回一个CSP头部,格式:

    Content-Security-Policy:policy

小编安利:

一个Web开发技术的优秀文档技术网站:https://developer.mozilla.org/zh-CN/

HTTP_header安全选项(浅谈)的更多相关文章

  1. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  2. Android性能优化的浅谈

    一.概要: 本文主要以Android的渲染机制.UI优化.多线程的处理.缓存处理.电量优化以及代码规范等几方面来简述Android的性能优化 二.渲染机制的优化: 大多数用户感知到的卡顿等性能问题的最 ...

  3. [原创]浅谈如何使用gcc开发NT核心驱动程序

    原文链接:[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来.诚然,用VC 配合 WINDDK 的确工作的不错,但或 ...

  4. VSTO学习笔记(九)浅谈Excel内容比较

    原文:VSTO学习笔记(九)浅谈Excel内容比较 说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够对基于文本的文件内容作出快速.准确的比较,有详 ...

  5. .NET(C#):浅谈程序集清单资源和RESX资源

    原文:.NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  6. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  7. 【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件

    简介 马三最近换到了一家新的公司撸码,新的公司 UI 部分采用的是 NGUI 插件,而之前的公司用的一直是 Unity 自带的 UGUI,因此马三利用业余时间学习了一下 NGUI 插件的使用,并把知识 ...

  8. 浅谈 Java 主流开源类库解析 XML

    在大型项目编码推进中,涉及到 XML 解析问题时,大多数程序员都不太会选用底层的解析方式直接编码. 主要存在编码复杂性.难扩展.难复用....,但如果你是 super 程序员或是一个人的项目,也不妨一 ...

  9. 浅谈 URI 及其转义

    URI URI,全称是 Uniform Resource Identifiers,即统一资源标识符,用于在互联网上标识一个资源,比如 https://www.upyun.com/products/cd ...

  10. 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍

    浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍 前记 自己是搞编程的,首先我是一个菜鸟,接触计算机这么久了,感觉很多计算机方面的技术和知识朦朦胧胧.模模糊糊,貌似有些贻笑大方了:所 ...

随机推荐

  1. DPT-RP1 解锁过程整理

    前言 首先,感谢大神HappyZ ,没有他的教程,没有下文了. 其次,要感谢的是润物 ,没有她的教程, 可能要研究好久才能弄明白大神给的工具怎么用. 本人没接触过python,以为在命令行执行Pyth ...

  2. 获取Zabbix 中资源的使用率

    import pymysql as MySQLdb import time import datetime import xlsxwriter # zabbix数据库信息: zdbhost = 'xx ...

  3. linux虚拟机中FTP匿名访问模式介绍与配置

    FTP分3种访问模式,分别是:匿名访问模式,本地用户模式及虚拟用户模式 匿名访问是一种最不安全的验证模式,任何人都可以无需密码验证就登陆到FTP服务端主机,这 种模式一般只用来保存不重要的公开文件,尤 ...

  4. pngquant——一个好用的png压缩工具

    一个可以进行有损图片压缩的命令行工具和代码库. 网址:https://pngquant.org/ 1.为什么选择pngquant 传说中的神器——tinyPng 我们现在用的工具——ImageAlph ...

  5. 谷歌地图 API 开发之获取坐标以及街道详情

    自己的项目中有获取当前点击的坐标经纬度或者获取当前街道的信息的需求.估计这个对于新手来说,还是比较麻烦的,因为从官网上找这个也并不是很好找,要找好久的,运气好的可能会一下子找到. 献上自己写的测试案例 ...

  6. PAT(甲级)2017年春季考试

    PAT(甲级)2017年春季考试 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int ...

  7. 第二周选做(myod)

    02.第二周myod(选做) 实验要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Mak ...

  8. Flask容器化部署原理与实现

    本文将介绍Flask的部署方案:Flask + Nginx + uWSGI,并使用docker进行容器化部署,部署的实例来源 Flask开发初探,操作系统为ubuntu. Flask系列文章: Fla ...

  9. nginx、redis在Centos7中,加入开机自启动

    nginx加入开机启动 cat <<EOF >> /etc/systemd/system/nginx.service> [Unit]> Description=ng ...

  10. fastDfs-理解安装,一篇就够了

    觉得可以,点关注 contos7 fastdfs-5.11 fastdfs-nginx-module-1.20 libfastcommon-1.0.40 nginx-1.12.0 在百度网盘可以找到对 ...