让浏览器不再显示 https 页面中的 http 请求警报美高梅59599:

让浏览器不再显示 https 页面中的 http 请求警报美高梅59599:

CSP设置upgrade-insecure-requests

好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4
月份就出了一个 Upgrade Insecure Requests 的草案美高梅59599,,他的作用就是让浏览器自动升级请求。

在我们服务器的响应头中加入:

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

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

我们的页面是 https 的,而这个页面中包含了大量的 http
资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http
资源时自动替换成 https 请求。可以查看 google
提供的一个 demo

美高梅59599 1

不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:

美高梅59599 2

当然,如果我们不方便在服务器/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 草案也会很快进入
RFC 模式。

从 W3C
工作组给出的 example,可以看出,这个设置不会对外域的
a 链接做处理,所以可以放心使用。

1 赞 收藏
评论

美高梅59599 3

点击劫持(Clickjacking)

点击劫持,clickjacking
是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段,又被称为界面伪装(UI
redressing)。例如用户收到一封包含一段视频的电子邮件,但其中的“播放”按钮并不会真正播放视频,而是被诱骗进入一个购物网站。

美高梅59599 4

针对点击劫持攻击,开放Web应用程序安全项目(Open Web Application Security
Project
,OWASP)
(非营利组织,其目的是协助个人、企业和机构来发现和使用可信赖软件)
提供了一份指引,《Defending_with_X-Frame-Options_Response_Headers》

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 frame
标签 或者 object
标签中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持
(clickjacking) 的攻击。DENY:表示该页面不允许在 frame
中展示,即便是在相同域名的页面中嵌套也不允许。SAMEORIGIN:表示该页面可以在相同域名页面的
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");

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

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

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

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

Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over
HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’.
This content should also be served over HTTPS.

HTTPS改造之后,我们可以在很多页面中看到如下警报:

美高梅59599 5

很多运营对 https 没有技术概念,在填入的数据中不免出现 http
的资源,体系庞大,出现疏忽和漏洞也是不可避免的。

X-XSS-Protection

HTTP X-XSS-Protection 响应头是Internet
Explorer,Chrome和Safari的一个功能,当检测到跨站脚本攻击
(XSS)时,浏览器将停止加载页面。配置选项:0 禁止XSS过滤。1
启用XSS过滤(通常浏览器是默认的)。
如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。mode=block
启用XSS过滤,
如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。report=reporting-URI
启用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)

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;

暴露 URL (HTTPS > HTTP Sites)

Referrer
信息被广泛用于网络访问流量来源分析,它是众多网站数据统计服务的基础,例如
Google Analytics
AWStats,基于Perl的开源日志分析工具。同样的这一特性也会很容易被恶意利用,造成用户敏感信息泄漏,例如将用户
SESSION ID 放在 URL 中,第三方拿到就可能看到别人登录后的页面内容。2014
年,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
    //对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源
  • Referrer-Policy: same-origin
    //对于同源的请求会发送引用地址,但是对于非同源请求则不发送引用地址信息。
  • Referrer-Policy: strict-origin
    //在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS)
  • Referrer-Policy: strict-origin-when-cross-origin
    //对于同源的请求,会发送完整的URL作为引用地址
  • Referrer-Policy: unsafe-url //无论是否同源请求,都发送完整的
    URL(移除参数信息之后)作为引用地址。

我们必须确保用户从全 HTTPS 站点跳转到 HTTP
站点的时候,没有中间人可以嗅探出用户实际的 HTTPS URL,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 贡献了一个非常棒的网站
[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地图