9159金沙游艺场

图片 2
Web前端开发大系概览 (前端开发技术栈)
图片 2
别人家的面试题:统计“1”的个数

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

让浏览器不再显示 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 —–

关于启用 HTTPS 的一些经验分享

2015/12/04 · 基础技术 ·
HTTP,
HTTPS

原文出处:
imququ(@屈光宇)   

随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站
HTTPS。就在今天,免费提供证书服务的 Let’s
Encrypt 项目也正式开放,HTTPS 很快就会成为
WEB 必选项。HTTPS 通过 TLS
层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被查看或篡改,以及防止中间人冒充。本文分享一些启用
HTTPS 过程中的经验,重点是如何与一些新出的安全规范配合使用。至于 HTTPS
的部署及优化,之前写过很多,本文不重复了。

CSP设置upgrade-insecure-requests

好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4
月份就出了一个 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 草案也会很快进入
RFC 模式。

从 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
中展示,即便是在相同域名的页面中嵌套也不允许。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");

理解 Mixed Content

HTTPS 网页中加载的 HTTP 资源被称之为 Mixed
Content(混合内容),不同浏览器对 Mixed Content 有不一样的处理规则。

跨站脚本 Cross-site scripting (XSS)

跨站脚本通常指的是通过利用开发时留下的漏洞,注入恶意指令代码(JavaScript/Java/VBScript/ActiveX/Flash/HTML等)到网页,使用户加载并执行攻击者恶意制造的程序。攻击者可能得到更高的权限、私密网页、会话和cookie等各种内容。目前有两种不同的
HTTP 响应头可以用来防止 XSS 攻击,它们是:

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

早期的 IE

早期的 IE 在发现 Mixed Content
请求时,会弹出「是否只查看安全传送的网页内容?」这样一个模态对话框,一旦用户选择「是」,所有
Mixed Content 资源都不会加载;选择「否」,所有资源都加载。

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)

比较新的 IE

比较新的 IE
将模态对话框改为页面底部的提示条,没有之前那么干扰用户。而且默认会加载图片类
Mixed Content,其它如 JavaScript、CSS
等资源还是会根据用户选择来决定是否加载。

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";

现代浏览器

现代浏览器(Chrome、Firefox、Safari、Microsoft Edge),基本上都遵守了
W3C 的 Mixed Content 规范,将
Mixed Content 分为Optionally-blockable 和 Blockable 两类:

Optionally-blockable 类 Mixed Content
包含那些危险较小,即使被中间人篡改也无大碍的资源。现代浏览器默认会加载这类资源,同时会在控制台打印警告信息。这类资源包括:

  • 通过 <img> 标签加载的图片(包括 SVG 图片);
  • 通过 <video> / <audio> 和 <source> 标签加载的视频或音频;
  • 预读的(Prefetched)资源;

除此之外所有的 Mixed Content
都是 Blockable,浏览器必须禁止加载这类资源。所以现代浏览器中,对于
HTTPS 页面中的 JavaScript、CSS 等 HTTP
资源,一律不加载,直接在控制台打印错误信息。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图