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. es3设置属性不能修改

    /*es3*/ { var Person =function () { var data ={ name:'zs', sex:'男', age:18 } this.get=function (key) ...

  2. 网页解析--BeautifulSoup练习

    # coding = utf-8 # BeautifulSoup 主要功能是解析提取HTML数据 # re lxml bs4 # pip install Beautifulsoup4 # from b ...

  3. 【漏洞复现】Apache Solr远程代码执行(CVE-2019-0193)

    0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...

  4. Sql 修改表结构

    添加字段 alter table 表名 add 字段名 nvarchar(100) not null 修改字段 alter table 表名 alter column 字段名 int not null ...

  5. Lambda入门,看这一篇幅就够了

    jdk1.8中的lambda表达式学习笔记 一.引入一个例子 我们写一个多线程的例子,如下:采用实现Runable接口的方式 package cn.lyn4ever.lambda; public cl ...

  6. day20191012笔记

    课程默写笔记: 1.程序架构 C/S 客户端/服务器端 B/S 浏览器/服务器端 2.Tomcat应用服务器 tomcat默认端口号是80:tomcat配置文件中通常端口的定义是8080: 3.使用开 ...

  7. Spring(Bean)5

    spel <bean id="address" class="com.atguigu.spring.beans.spel.Address"> < ...

  8. Chapter 01—Introduction to R

    1.getwd():list the current working directory. (即获得当前工作路径) 2.setwd("mydirectory"):change th ...

  9. CSS 导入-选择器-权重

    CSS 导入-选择器 Cascading Style Sheets 层叠样式表 它用来控制网页样式,并允许将样式代码与网页内容分离的一种标记性语言 CSS语法结构 选择器 声明{} 属性名:属性值 c ...

  10. TensorFlow2.0(11):tf.keras建模三部曲

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...