Web应用服务器安全,页面中的

图片 6

Web应用服务器安全,页面中的

让浏览器不再展现 https 页面中的 http 必要警示

2015/08/26 · 基础技能 ·
HTTPS,
浏览器

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

HTTPS 是 HTTP over Secure Socket Layer,以安全为对象的 HTTP 通道,所以在
HTTPS 承载的页面上分歧意现身 http 须求,意气风发旦现身就是提示或报错:

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
服务器生龙活虎侧的安全加固和测量试验方法。

攻击方式 防护方式 说明
点击劫持(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 的不方便,在 二〇一四 年 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 43.0,可是自个儿信赖,CSP 将改为未来 web
前端安全努力关注和动用的剧情。而 upgrade-insecure-requests 草案也会异常快进入陆风X8FC 形式。

从 W3C
职业组给出的 example,能够见到,那一个设置不会对国外的
a 链接做拍卖,所以能够放心使用。

1 赞 收藏
评论

图片 4

点击威逼(Clickjacking)

点击威吓,clickjacking
是风度翩翩种在网页少校恶意代码等掩盖在相仿没有害的从头到尾的经过(如开关)之下,并诱使顾客点击的招数,又被称作分界面伪装(UI
redressing)。譬如客户接收后生可畏封富含生机勃勃段录制的电子邮件,但里面的“播放”按键并不会真正播放录制,而是上当步向一个购物网址。

图片 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");

跨站脚本 Cross-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过滤。1
启用XSS过滤(常常浏览器是默认的)。
假使检查测验到跨站脚本攻击,浏览器将免除页面(删除不安全的有的)。mode=block
启用XSS过滤,
要是检查评定到攻击,浏览器将不会免去页面,而是阻止页面加载。report=reporting-URubiconI
启用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)正是风度翩翩种白名单制度,显著告诉顾客端哪些外界财富(脚本/图片/音视频等)能够加载和执行。浏览器能够拒却任何不出自预订义地点的其余内容,进而幸免外部注入的台本和其它此类恶意内容。设置
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)使用的生龙活虎种本领,它尝试猜度能源的
MIME 类型(也叫做 Content-Type 内容类型)。那意味浏览器能够忽视由 Web
服务器发送的 Content-Type
Header,并非尝试分析资源(举例将纯文本标识为HTML
标签),遵照它感到的能源(HTML)渲染财富实际不是服务器的概念(文本)。即便这是三个很实惠的法力,能够改进服务器发送的荒谬的
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

中档人攻击中攻击者与广播发表的双面分别创设独立的关系,并调换其所抽出的多少,使通信的两岸以为他俩正在通过八个私密的连年与对方直接对话,但其实整个会话都被攻击者完全调节。譬如,在叁个未加密的Wi-Fi
有线接入点的承当范围内的中级人攻击者,能够将和睦看成三个南路人插入这些网络。强制客户使用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的开源日志解析工具。相仿的这大器晚成特点也会十分轻巧被恶心使用,形成客商敏感音讯外泄,举例将客商SESSION ID 放在 U奥德赛L 中,第三方获得就或许看见人家登入后的页面内容。二〇一六年,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
    //对于同源的乞求,会发送完整的USportageL作为援用地址,然则对于非同源央求仅发送文书的源
  • Referrer-Policy: same-origin
    //对于同源的呼吁会发送引用地址,但是对于非同源央求则不发送援用地址新闻。
  • Referrer-Policy: strict-origin
    //在同等安全等第的情形下,发送文书的源作为引用地址(HTTPS->HTTPS)
  • Referrer-Policy: strict-origin-when-cross-origin
    //对于同源的乞求,会发送完整的UQashqaiL作为引用地址
  • Referrer-Policy: unsafe-url //无论是或不是同源须要,都发送完整的
    URL(移除参数音信之后)作为引用地址。

大家必需保险客户从全 HTTPS 站点跳转到 HTTP
站点的时候,未有中间人能够嗅探出客户实际的 HTTPS U纳瓦拉L,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

测试

丹青妙手切磋员 斯科特 Helme 进献了二个非常的棒的网址
[https://securityheaders.io/],能够解析本人站点的Header(报文头),并建议改善安全性的建议。示比方下(情状参数,Operating
System: CentOS 7 ; haproxy 1.5.14 ; nginx 1.12.0)。

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

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

加固后
admin

网站地图xml地图