如何使用 HTTP Headers来保护你的 Web网站(上)

目前无论是简单的小网页还是复杂的单页应用,Web网站都是网络攻 击的目标之一。事实上了解网络安全并不是可有可无的,而是 Web开发者的必需做的任务,特别对于构建面向消费者的网站建设开发人员。

开发者可以利用 HTTP响应头来加强 Web网站应用程序的安全性,通常只需要添加几行代码即可。本文就是说明 web开发者如何利用 HTTP Headers 来构建安全的网站应用。虽然本文的示例代码是 Node.js,但基本所有主流的服务端语言都支持设置 HTTP 响应头,并且都可以简单地对其进行配置。

如何利用 HTTP Headers

关于 HTTP Headers

技术上来说,HTTP 头只是简单的字段,以明文形式编码,它是 HTTP 请求和响应消息头的一部分。它们旨在使客户端和服务端都能够发送和接受有关要建立的连接、所请求的资源,以及返回的资源本身的元数据。

可以简单地使用 cURL --head 来检查纯文本 HTTP 响应头,例如:

$ curl --head https://www.google.com
HTTP/1.1 200 OK
Date: Thu, 05 Jan 2017 08:20:29 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding

现在,数百种响应头正在被 web网站应用所使用,其中一部分由互联网工程任务组(IETF)标准化。IETF 是一个开放性组织,今天我们所熟知的许多 web 标准和专利都是由他们推进的。HTTP 头提供了一种灵活可扩展的机制,造就了现今的网络各种丰富多变的用例。

禁用缓存资源

缓存是优化客户端-服务端架构性能中有效的技术,HTTP 也不例外,同样广泛利用了缓存技术。但是,在缓存的资源是保密的情况下,缓存可能导致漏洞,所以必须避免。假设一个 web 应用对含有敏 感信息的网页进行缓存,并且是在一台公用的 PC 上使用,任何人可以通过访问浏览器的缓存看到这个 web 应用上的敏 感信息,甚至有时仅仅通过点击浏览器的返回按钮就可以看到。

IETF RFC 7234 中定义了 HTTP 缓存,指定 HTTP 客户端(浏览器以及网络代理)的默认行为:除非另行指定,否则始终缓存对 HTTP GET 请求的响应。虽然这样可以使 HTTP 提升性能减少网络拥塞,但如上所述,它也有可能使终端用户个人信息被盗。好消息是,HTTP 规范还定义了一种非常简单的方式来指示客户端对特定响应不进行缓存,就是通过 HTTP 响应头。

当你准备返回敏 感信息并希望禁用 HTTP 客户端的缓存时,有三个响应头可以返回:

Cache-Control

从 HTTP 1.1 引入的此响应头可能包含一个或多个指令,每个指令带有特定的缓存语义,指示 HTTP 客户端和代理如何处理有此响应头注释的响应。我推荐如下指定响应头,cache-control: no-cache, no-store, must-revalidate。这三个指令基本上可以指示客户端和中间代理不可使用之前缓存的响应,不可存储响应,甚至就算响应被缓存,也必须从源服务器上重新验证。

未完续接:如何使用 HTTP Headers来保护你的 Web网站(下)

 

转载请注明链接地址:荐爱小站 » 如何使用 HTTP Headers来保护你的 Web网站(上)

赞 (0) 赏 !

觉得文章有用就打赏一下吧,赠人玫瑰手有余香!

支付宝扫一扫打赏

微信扫一扫打赏