让浏览器不再展现,防护与检测

图片 6
永利皇宫402

让浏览器不再显得 https 页面中的 http 请求警报

2015/08/26 · 基本功本领 ·
HTTPS,
浏览器

原稿出处:
李靖(@Barret李靖)   

HTTPS 是 HTTP over Secure Socket Layer,以安全为对象的 HTTP 通道,所以在
HTTPS 承载的页面上不允许出现 http 请求,1旦出现正是提示或报错:

Mixed Content: The page at ‘‘ was loaded over
HTTPS, but requested an insecure image ‘’.
This content should also be served over HTTPS.

HTTPS更换之后,大家能够在不少页面中看看如下警报:

图片 1

多数运行对 https 未有才能概念,在填写的数额中难免出现 http
的财富,系列变得庞大,出现大意和尾巴也是不可翻盘的。

摘要

目前有大多的恶心攻击都是以网址及其用户作为靶子,本文将简介在 Web
服务器1侧的安全加固和测试方法。

攻击方式 防护方式 说明
点击劫持(clickjacking) X-Frame-Options Header —–
基于 SSL 的中间人攻击(SSL Man-in-the-middle) HTTP Strict Transport Security —–
跨站脚本(Cross-site scripting,XSS) X-XSS-Protection、Content-Security-Policy、X-Content-Type-Options —–

CSP设置upgrade-insecure-requests

辛亏 W3C 专门的事业组思考到了作者们升级 HTTPS 的劳累,在 20壹伍 年 7月份就出了一个 Upgrade Insecure Requests 的草案,他的功力正是让浏览器自动晋级请求。

在大家服务器的响应头中参与:

header(“Content-Security-Policy: upgrade-insecure-requests”);

1
header("Content-Security-Policy: upgrade-insecure-requests");

咱们的页面是 https 的,而那么些页面中富含了大气的 http
财富(图片、iframe等),页面一旦发掘存在上述响应头,会在加载 http
能源时自动替换来 https 请求。能够查看 google
提供的贰个 demo:

图片 2

而是让人不解的是,那么些财富发出了三次呼吁,预计是浏览器落成的 bug:

图片 3

自然,若是大家不便宜在服务器/Nginx
上操作,也得以在页面中投入 meta 头:

XHTML

<meta http-equiv=”Content-Security-Policy”
content=”upgrade-insecure-requests” />

1
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />

此时此刻支撑那些装置的还唯有 chrome 四三.0,可是我深信,CSP 将改成未来 web
前端安全努力关注和使用的剧情。而 upgrade-insecure-requests 草案也会急迅进入
安德拉FC 形式。

从 W3C
职业组给出的 example,能够看来,这么些装置不会对别国的
a 链接做管理,所以能够放心使用。

1 赞 收藏
评论

图片 4

点击恐吓(Clickjacking)

点击勒迫,clickjacking
是一种在网页中校恶意代码等隐蔽在接近无毒的始末(如开关)之下,并诱使用户点击的花招,又被称作分界面伪装(UI
redressing)。比如用户接受1封饱含一段录制的电子邮件,但中间的“播放”开关并不会真的播放录制,而是被诱骗进入一个购物网址。

图片 5

本着点击劫持攻击,盛开Web应用程序安全项目(Open Web Application Security
Project
,OWASP)(非营利团体,其目标是支持个人、公司和机构来开采和行使可注重软件)
提供了一份指导,《Defending_with_X-Frame-Options_Response_Headers》

X-Frame-Options HTTP 响应头是用来给浏览器提醒允许二个页面可不可以在 frame
标签 大概 object
标签中展现的标记。网址能够使用此成效,来有限支撑本身网址的始末从未被嵌到外人的网站中去,也为此制止了点击威吓(clickjacking) 的抨击。DENY:表示该页面不一样目的在于 frame
中显示,即正是在同等域名的页面中嵌套也不容许。SAMEO兰德锐界IGIN:表示该页面可以在平等域名页面的frame 中体现。ALLOW-FROM uri:表示该页面能够在钦赐来源的 frame
中展现。配置如下:

//HAProxy
http-response set-header X-Frame-Options:DENY
//Nginx
add_header X-Frame-Options "DENY";
//Java
response.addHeader("x-frame-options","DENY");

跨站脚本 克罗丝-site scripting (XSS)

跨站脚本平常指的是通过运用支付时留下的纰漏,注入恶意指令代码(JavaScript/Java/VBScript/ActiveX/Flash/HTML等)到网页,使用户加载并实践攻击者恶意创建的顺序。攻击者可能获得越来越高的权位、私密网页、会话和cookie等各样内容。近来有三种不相同的
HTTP 响应头能够用来严防 XSS 攻击,它们是:

  • X-XSS-Protection
  • Content-Security-Policy

X-XSS-Protection

HTTP X-XSS-Protection 响应头是Internet
Explorer,Chrome和Safari的贰个功能,当检查测试到跨站脚本攻击
(XSS)时,浏览器将终止加载页面。配置选项:0 不准XSS过滤。壹启用XSS过滤(经常浏览器是暗中认可的)。
借使检验到跨站脚本攻击,浏览器将消除页面(删除不安全的有个别)。mode=block
启用XSS过滤,
若是检查评定到攻击,浏览器将不会去掉页面,而是阻止页面加载。report=reporting-UCR-VI
启用XSS过滤。 借使检测到跨站脚本攻击,浏览器将消除页面并行使 CSP
report-uri 指令的功效发送违法报告。参考小说《The misunderstood
X-XSS-Protection》:

//HAProxy
http-response set-header X-XSS-Protection: 1;mode=block
//Nginx
add_header X-Xss-Protection "1; mode=block" always;;

浏览器协助情况:

Chrome Edge Firefox Internet Explorer Opera Safari
(Yes) (Yes) No 8.0 (Yes) (Yes)

Content-Security-Policy

情节安全性政策(Content Security
Policy,CSP)正是1种白名单制度,显明告诉客户端哪些外部能源(脚本/图片/音录像等)能够加载和施行。浏览器能够拒绝任何不出自预约义地方的别的内容,从而防卫外部注入的台本和其余此类恶意内容。设置
Content-Security-Policy Header:

//HAProxy:
http-response set-header Content-Security-Policy:script-src https://www.google-analytics.com;https://q.quora.com
//Nginx
add_header Content-Security-Policy-Report-Only "script-src https://www.google-analytics.com https://q.quora.com";

MIME-Sniffing

MIME-Sniffing(首若是Internet Explorer)使用的1种本事,它尝试猜想能源的
MIME 类型(也称为 Content-Type 内容类型)。那代表浏览器能够忽略由 Web
服务器发送的 Content-Type
Header,而不是尝尝分析能源(比方将纯文本标识为HTML
标签),遵照它感觉的能源(HTML)渲染能源而不是服务器的定义(文本)。纵然那是1个百般有效的功力,能够核查服务器发送的荒谬的
Content-Type,可是心怀不轨的人能够自由滥用那壹特点,那使得浏览器和用户大概被恶心攻击。比如,如通过精心制作二个图像文件,并在其间嵌入能够被浏览器所展现和执行的HTML和t代码。《Microsoft
Developer Network:IE8 Security Part V: Comprehensive
Protection》:

Consider, for instance, the case of a picture-sharing web service
which hosts pictures uploaded by anonymous users. An attacker could
upload a specially crafted JPEG file that contained script content,
and then send a link to the file to unsuspecting victims. When the
victims visited the server, the malicious file would be downloaded,
the script would be detected, and it would run in the context of the
picture-sharing site. This script could then steal the victim’s
cookies, generate a phony page, etc.

//HAProxy
http-response set-header X-Content-Type-Options: nosniff
//Nginx
add_header X-Content-Type-Options "nosniff" always;

SSL Strip Man-in-The-Middle Attack

个中人攻击中攻击者与报道的相互分别成立独立的沟通,并交流其所接到的数据,使通信的两端认为他们正在通过1个私密的连接与对方直接对话,但其实整个会话都被攻击者完全调节。举个例子,在2个未加密的Wi-Fi
有线接入点的接受范围内的中等人攻击者,能够将团结当作3其中档人插入那几个互连网。强制用户使用HTTP严俊传输安全(HTTP
Strict Transport
Security,HSTS)。 HSTS 是一套由
IETF
发表的互连网安全计谋机制。Chrome 和 Firefox 浏览器有三个放置的 HSTS
的主机列表,网址能够选取使用 HSTS 攻略强制浏览器选用 HTTPS
协议与网站开始展览通讯,以调整和缩小会话威逼风险。

图片 6

服务器设置下列选项能够强制全部客户端只好经过 HTTPS 连接:

//HAProxy
http-response set-header Strict-Transport-Security max-age=31536000;includeSubDomains;preload
//Nginx
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload; always;'

暴露 URL (HTTPS > HTTP Sites)

Referrer
消息被普及用于网络访问流量来源解析,它是不少网址数量总结服务的功底,比如
Google Analytics 和
AWStats,基于Perl的开源日志分析工具。一样的那1特点也会很轻巧被恶心使用,形成用户敏感新闻外泄,比如将用户
SESSION ID 放在 USportageL 中,第3方得到就恐怕看到人家登陆后的页面内容。201四年,W3C 宣布了 Referrer Policy 的新草案,开采者开首有权决定本人网址的
Referrer Policy。不过仅有 Chrome/Firefox
浏览器较新的版本的能够提供支撑。

Feature Chrome Firefox Edge、Internet Explorer、 Opera、Safari
Basic Support 56.0 50.0 (No)
same-origin (No)1 52.0 (No)
strict-origin (No)1 52.0 (No)
strict-origin-when-cross-origin (No)1 52.0 (No)

Referrer-Policy选项列表:

  • Referrer-Policy: no-referrer //整个 Referer
    首部会被移除。访问来源音讯不随着请求一同发送。
  • Referrer-Policy: no-referrer-when-downgrade //私下认可选项
    //引用页面包车型地铁地点会被发送(HTTPS->HTTPS),降级的景况不会被发送
    (HTTPS->HTTP)
  • Referrer-Policy: origin //在任何景况下,仅发送文书的源作为引用地址
  • Referrer-Policy: origin-when-cross-origin
    //对于同源的请求,会发送完整的UQashqaiL作为引用地址,不过对于非同源请求仅发送文书的源
  • Referrer-Policy: same-origin
    //对于同源的请求会发送引用地址,可是对于非同源请求则不发送引用地址新闻。
  • Referrer-Policy: strict-origin
    //在同等安全级其他景况下,发送文书的源作为引用地址(HTTPS->HTTPS)
  • Referrer-Policy: strict-origin-when-cross-origin
    //对于同源的央求,会发送完整的UWranglerL作为引用地址
  • Referrer-Policy: unsafe-url //无论是不是同源请求,都发送完整的
    U宝马7系L(移除参数消息之后)作为引用地址。

作者们亟须确定保证用户从全 HTTPS 站点跳转到 HTTP
站点的时候,未有中间人能够嗅探出用户实际的 HTTPS U中华VL,Referrer Policy
设置如下:

//HAProxy
http-response set-header Referrer-Policy no-referrer-when-downgrade
//Nginx
add_header Referrer-Policy: no-referrer-when-downgrade
Source Destination Referrer (Policy :no-referrer-when-downgrade)
https://test.com/blog1/ http://test.com/blog2/ NULL
https://test.com/blog1/ https://test.com/blog2/ https://test.com/blog1/
http://test.com/blog1/ http://test.com/blog2/ http://test.com/blog1/
http://test.com/blog1/ http://example.com http://test.com/blog1/
http://test.com/blog1/ https://example.com http://test.com/blog1/
https://test.com/blog1/ http://example.com NULL

测试

康宁研究员 Scott Helme 进献了2个这多少个棒的网址
[https://securityheaders.io/\],能够分析本人站点的Header(报文头),并提议改善安全性的提议。示举个例子下(蒙受参数,Operating
System: CentOS 七 ; haproxy 1.5.14 ; nginx 一.1二.0)。

  • 加强前的检查评定结果
![](https://upload-images.jianshu.io/upload_images/1037849-af2f51678e583572.png)

加固前
  • 加固后的检查测试结果
![](https://upload-images.jianshu.io/upload_images/1037849-3d4af6ce7042c7b9.png)

加固后

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图