Web 安全之内容安全策略 (CSP)

Web 安全之内容安全策略 (CSP)

让浏览器不再显得 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改造之后,大家得以在重重页面中来看如下警报:

澳门新萄京8522 1

洋洋营业对 https 没有技术概念,在填充的多寡中难免出现 http
的能源,种类庞大,出现大意和漏洞也是不可防止的。

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

创立接纳 S福特ExplorerI

HTTPS
能够预防数据在传输中被曲解,合法的证书也能够起到表达服务器身份的意义,但是即便CDN 服务器被凌犯,导致静态文件在服务器上被曲解,HTTPS 也无能为力。

W3C 的 SRI(Subresource
Integrity)规范能够用来缓解这么些题材。SPRADOI
通过在页面引用能源时钦点能源的摘要签名,来促成让浏览器验证能源是不是被曲解的目的。只要页面不被篡改,SLacrosseI
策略就是牢靠的。

有关 SHighlanderI 的越多表明请看小编此前写的《Subresource Integrity
介绍》。S大切诺基I 并不是
HTTPS
专用,但若是主页面被威胁,攻击者能够轻松去掉财富摘要,从而失去浏览器的
S陆风X8I 校验机制。

那正是说哪些使用?

CSP 能够由二种办法钦赐:HTTP Header 和 HTML。HTTP 是在 HTTP 由扩展Header 来钦定,而 HTML 级别则由 Meta 标签钦命。

CSP 有两类:Content-Security-Policy 和
Content-Security-Policy-Report-Only。(大小写非亲非故)

HTTP header :
"Content-Security-Policy:" 策略
"Content-Security-Policy-Report-Only:" 策略

HTTP Content-Security-Policy
头能够钦定一个或多个能源是平安的,而Content-Security-Policy-Report-Only则是允许服务器检查(非强制)2个策略。四个头的国策定义由预先使用初步定义的。

HTML Meta :
<meta http-equiv="content-security-policy" content="策略">
<meta http-equiv="content-security-policy-report-only" content="策略">

Meta 标签与 HTTP 头只是行式分化而效能是同样的。与 HTTP
头一样,优先利用起初定义的国策。借使 HTTP 头与 Meta
定义同时设有,则优用 HTTP 中的定义。

假定用户浏览器已经为近来文书档案执行了1个 CSP 的策略,则会跳过 Meta
的定义。借使 META 标签缺乏 content 属性也一致会跳过。

本着开发者草案中特意的晋升一点:为了利用政策生效,应该将 Meta
成分头放在早先地方,以幸免提升人为的 CSP 策略注入。

方今,七种化的口诛笔伐手段熟视无睹,守旧安全消除方案特别难以应对互连网安全攻击。OneASP&utm_campaign=AspRaspArti&from=jswgiardnp)
自适应安全平台合并了展望、预防、检查和测试和响应的能力,为您提供精准、持续、可视化的平安全防护范。想阅读越来越多技术文章,请访问
OneAPM
官方技术博客&utm_campaign=AspRaspArti&from=jswgiardnp)

正文转自 OneAPM 官方博客

CSP设置upgrade-insecure-requests

还好 W3C 工作组考虑到了大家升级 HTTPS 的勤奋,在 二零一四 年 1月份就出了三个 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:

澳门新萄京8522 2

可是令人不解的是,那么些财富发出了两遍呼吁,臆度是浏览器达成的 bug:

澳门新萄京8522 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 草案也会火速进入
哈弗FC 方式。

从 W3C
工作组给出的 example,能够看看,这么些设置不会对别国的
a 链接做拍卖,所以能够放心使用。

1 赞 收藏
评论

澳门新萄京8522 4

X-XSS-Protection

HTTP X-XSS-Protection 响应头是Internet
Explorer,Chrome和Safari的三个效应,当检查和测试到跨站脚本攻击
(XSS)时,浏览器将适可而止加载页面。配置选项:0 明确命令禁止XSS过滤。1
启用XSS过滤(常常浏览器是私下认可的)。
如若检查和测试到跨站脚本攻击,浏览器将免除页面(删除不安全的一对)。mode=block
启用XSS过滤,
若是检查和测试到攻击,浏览器将不会解决页面,而是阻止页面加载。report=reporting-U汉兰达I
启用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)

客观利用 HSTS

在网站全站 HTTPS 后,假若用户手动敲入网站的 HTTP
地址,也许从任哪儿方点击了网站的 HTTP 链接,注重于劳动端 30三分之一02
跳转才能运用 HTTPS 服务。而首先次的 HTTP
请求就有大概被吓唬,导致请求无法抵达服务器,从而构成 HTTPS 降级劫持。

内容安全策略 (CSP, Content Security Policy)
是3个附加的安全层,用于救助检查和测试和平解决决有些项目标攻击,包含跨站脚本攻击
(XSS) 和多少注入等攻击。

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

跨站脚本日常指的是由此选拔开发时预留的漏洞,注入恶意指令代码(JavaScript/Java/VBScript/ActiveX/Flash/HTML等)到网页,使用户加载并执行攻击者恶意创设的先后。攻击者可能获取更高的权杖、私密网页、会话和cookie等各个内容。近日有二种差异的
HTTP 响应头能够用来防护 XSS 攻击,它们是:

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

理解 Mixed Content

HTTPS 网页中加载的 HTTP 能源被誉为 Mixed
Content(混合内容),不一致浏览器对 Mixed Content 有不等同的拍卖规则。

这么些攻击可用于贯彻从数额窃取到网站破坏或当作恶意软件分发版本等用途。内容安全策略在现代浏览器中早已包蕴,使用的是
W3C CSP 1.0 标准中描述的 Content-Security-Policy 底部和指令。

MIME-Sniffing

MIME-Sniffing(重假设Internet Explorer)使用的一种技术,它尝试推断能源的
MIME 类型(也叫做 Content-Type 内容类型)。那意味浏览器能够忽略由 Web
服务器发送的 Content-Type
Header,而不是尝试分析财富(例如将纯文本标记为HTML
标签),根据它认为的财富(HTML)渲染能源而不是服务器的概念(文本)。尽管那是三个老大实惠的法力,能够改进服务器发送的荒唐的
Content-Type,但是心怀不轨的人方可任意滥用这一特征,那使得浏览器和用户只怕被恶意抨击。例如,如通过精心制作3个图像文件,并在内部嵌入能够被浏览器所展现和实行的HTML和t代码。澳门新萄京8522,《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;

HSTS 基本选择

本条难点得以通过 HSTS(HTTP Strict Transport
Security,RFC6797)来缓解。HSTS
是2个响应头,格式如下:

JavaScript

Strict-Transport-Security: max-age=expireTime [; includeSubDomains]
[; preload]

1
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]

max-age,单位是秒,用来报告浏览器在钦命时间内,那一个网站必须透过 HTTPS
协议来走访。也正是对此那些网站的 HTTP 地址,浏览器须求先在地头替换为
HTTPS 之后再发送请求。

includeSubDomains,可选参数,假若内定这些参数,申明那么些网站有着子域名也务必透过
HTTPS 协议来拜访。

preload,可选参数,前面再介绍它的功能。

HSTS 这么些响应头只好用于 HTTPS 响应;网站必须使用暗许的 443
端口;必须利用域名,不能够是 IP。而且启用 HSTS
之后,一旦网站证书错误,用户不能够取舍忽略。

发表评论

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

网站地图xml地图