zoukankan      html  css  js  c++  java
  • 【工具箱】web http response响应头解决安全问题

    X-Frame-Options

    该响应头中用于控制是否在浏览器中显示frame或iframe中指定的页面,主要用来防止Clickjacking(点击劫持)攻击。

    X-Frame-Options: SAMEORIGIN
    • DENY 禁止显示frame内的页面(即使是同一网站内的页面)
    • SAMEORIGIN 允许在frame内显示来自同一网站的页面,禁止显示来自其他网站的页面
    • ALLOW-FROM origin_uri允许在frame内显示来自指定uri的页面(当允许显示来自于指定网站的页面时使用)

    X-Content-Type-Options

    如果从script或stylesheet读入的文件的MIME类型与指定MIME类型不匹配,不允许读取该文件。用于防止XSS等跨站脚本攻击。

    X-Frame-Options: nosniff

    X-XSS-Protection

    用于启用浏览器的XSS过滤功能,以防止XSS跨站脚本攻击。

    X-XSS-Protection: 1; mode=block
    • 0 禁用XSS过滤功能
    • 1 启用XSS过滤功能

    Content-Security-Policy

    用于控制当外部资源不可信赖时不被读取。用于防止XSS跨站脚本攻击或数据注入攻击(但是,如果设定不当,则网站中的部分脚本代码有可能失效)。

    之前的字段名为X-Content-Security-Policy

    Content-Security-Policy: default-src 'self'
    • default-src 'self' 允许读取来自于同源(域名+主机+端口号)的所有内容
    • default-src 'self' *.example.com允许读取来自于指定域名及其所有子域名的所有内容

    X-Permitted-Cross-Domain-Policies

    用于指定当不能将“crossdomain.xml”文件(当需要从别的域名中的某个文件中读取Flash内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。

    X-Permitted-Cross-Domain-Policies: master-only
    • master-only 只允许使用主策略文件(/crossdomain.xml)

    Strict-Transport-Security

    用于通知浏览器只能使用HTTPS协议访问网站。用于将HTTP网站重定向到HTTPS网站。

    Strict-Transport-Security: max-age=31536000; includeSubDomains
    • max-age 用于修改STS的默认有效时间。
    • includeSubDomains 用于指定所有子域名同样使用该策略。

    Access-Control-Allow-Origin等CORS相关字段

    当使用XMLHttpRequest从其他域名中获取资源进行跨域通信时使用。

    Access-Control-Allow-Origin: http://www.example.com
    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Allow-Headers: X-TRICORDER
    Access-Control-Max-Age: 1728000

    上述代码用于设定与“http://www.example.com”进行跨域通信处理,允许使用POST, GET, OPTIONS方法,在发送的请求头中添加X-TRICORDER字段,通信超时时间为1,728,00秒。

    X-Download-Options

    用于放置直接打开用户下载文件。

    X-Download-Options: noopen
    • noopen 用于指定IE 8以上版本的用户不打开文件而直接保存文件。在下载对话框中不显示“打开”选项。

    Set-Cookie

    用于设置Cookie。

    Set-Cookie: name=value; secure; HttpOnly
    • secure 只在进行HTTP通信时发送Cookie。
    • HttpOnly 指定不能从JavaScript脚本代码访问Cookie值。
    • 虽然path属性用于指定Cooki发送路径,但是不能被作为一种安全手段。
    • domain属性具有后方一致特性,出于安全考虑最好不要使用该属性,除非明确指定向多个域发送Cookie。

    Cache-Control

    指定浏览器的缓存方式,通过逗号分隔。

    Cache-Control: no-cache, no-store, must-revalidate
    • no-cache 指定服务器端不缓存数据。
    • no-store 指定不能在本地缓存中保存数据。
    • must-revalidate 指定服务器端可以缓存数据,但是必须对数据进行确认。

    pragma

    用于与HTTP/1.0进行向后兼容的响应头字段,原本只被使用在客户端请求头中。与“Cache-Control: no-cache”结合使用。

    pragma: no-cache
    • no-cache 客户端要求所有中间服务器不能缓存数据。

    expires

    指定数据的有效时间。不希望缓存数据时可以将该字段值与Date字段值指定为相同值或者将该字段值指定为“-1”。

    expires: -1

    content-type

    指定实体内对象的媒体类型(MediaType)。在charset关键字中指定文字编码格式。

    content-type: text/html;charset=utf-8

    HTTP响应头的设定方法

    在Apache服务器中指定响应头时,需要在httpd.conf文件中将下述模块设定为有效状态。

    • LoadModule headers_module modules/mod_headers.so

    然后使用下述方法设定HTTP响应头。

    Header set HeaderFieldName "value"
    //例如
    Header set X-XSS-Protection "1; mode=block”
  • 相关阅读:
    600+ 道 Java面试题及答案整理(2021最新版)
    Spring Boot + Web Socket 实现扫码登录,这种方式太香了!!
    小团队适合引入 Spring Cloud 微服务吗?
    Netty 通道怎么区分对应的用户?
    软件开发打败了 80 %的程序员
    一个最简单的消息队列,带你理解 RabbitMQ!
    厉害了,Netty 轻松实现文件上传!
    Netty 是如何解决 TCP 粘包拆包的?
    图解 Git,一目了然!
    面试官:谈谈分布式一致性机制,我一脸懵逼。。
  • 原文地址:https://www.cnblogs.com/walt/p/15186059.html
Copyright © 2011-2022 走看看