巧用HTTP 响应头部提高 Web 安全性

在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。

1、X-Frame-Options

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

X-Frame-Options: SAMEORIGIN

DENY : 禁止显示 frame 内的页面(即使是同一网站内的页面)

SAMEORIGIN: 允许在 frame 内显示来自同一网站的页面,禁止显示来自其他网站的页面

ALLOW-FROM origin_uri: 允许在 frame 内显示来自指定 uri 的页面(当允许显示来自于指定网站的页面时使用)

2、X-Content-Type-Options

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

X-Frame-Options: nosniff

3、X-XSS-Protection

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

X-XSS-Protection: 1; mode=block

0 : 禁用 XSS 过滤功能

1 : 启用 XSS 过滤功能

4、Content-Security-Policy

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

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

Content-Security-Policy: default-src 'self'

default-src ‘self’:允许读取来自于同源(域名+主机+端口号)的所有内容

default-src ‘self’ *.example.com :允许读取来自于指定域名及其所有子域名的所有内容

5、X-Permitted-Cross

-Domain-Policies

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

X-Permitted-Cross-Domain-Policies: master-only

master-only 只允许使用主策略文件(/crossdomain.xml)

6、Strict-Transport-Security

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

Strict-Transport-Security: max-age=31536; includeSubDomains

max-age : 用于修改 STS 的默认有效时间。

includeSubDomains : 用于指定所有子域名同样使用该策略。

7、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: 1728

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

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”

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

虽然通过nginx accesslog可以记录用户访问某个接口或者网页所消耗的时间,但是不能清晰地追踪到具体哪个位置或者说函数慢,所以通过php-fpm慢日志,...

46010
来自专栏Java帮帮-微信公众号-技术文章全总结

Dubbo入门学习--Dubbo注册及监控中心(3)

Dubbo入门学习--Dubbo注册及监控中心 Dubbo提供广播、Zookeeper、Redis和Simple四种注册中心类型。 Multicast注册中心 ...

3483
来自专栏吴伟祥

Linux下软件的安装与管理(四) 原

Linux 下安装软件有自己的一套方式,用户可以根据自己的需要和获得的软件包的不同,选择自己喜欢的安装方式,

2062
来自专栏Laoqi's Linux运维专列

Centos 7 Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成)

6664
来自专栏学一学大数据

一文上手zabbix安装配置【运维篇】

2023
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

2808
来自专栏北京马哥教育

五分钟搞定 Linux 文档全部知识,就看这篇文章

1965
来自专栏应兆康的专栏

Python Web - Flask笔记10

编写uwsgi配置文件: 在项目的路径下面,创建一个文件叫做yingjoy_uwsgi.ini的文件,然后填写以下代码: [uwsgi] # Djang...

942
来自专栏喵了个咪的博客空间

[喵咪BELK实战(2)] elasticsearch+kibana搭建

[喵咪BELK实战(2)] elasticsearch+kibana搭建 ? 前言 上一节我们介绍了日志系统和BELK之后就要到激动人心的安装环境了,实践出真知...

3597
来自专栏北京马哥教育

ubuntu 12.04下3分钟搭建apache+python的运行环境

关于搭建apache+python的运行环境,网上很多文章都是用cgi方式,配置非常繁琐,把很多不相干的东西都扯了进来,都没有说到要点上。对于很多新手朋友来说,...

3895

扫码关注云+社区

领取腾讯云代金券