HTTP_header安全选项(浅谈)


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/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM