-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/master'
- Loading branch information
Showing
3 changed files
with
42 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# HTTP公钥固定(Public Key Pinning) | ||
|
||
## 什么是HPKP? | ||
|
||
HTTP公钥固定(HPKP)是一种安全功能,它告诉Web客户端将特定加密公钥与某个Web服务器相关联,以降低使用伪造证书进行“MITM攻击(中间人攻击)”的风险。 | ||
|
||
为了确保TLS会话中使用的服务器公钥的真实性,此公钥将包装到X.509证书中,该证书通常由证书颁发机构(CA)签名。诸如浏览器之类的Web客户端信任许多这些CA,它们都可以为任意域名创建证书。如果攻击者能够破坏单个CA,则他们可以对各种TLS连接执行MITM攻击。 HPKP可以通过告知客户端哪个公钥属于某个Web服务器来规避HTTPS协议的威胁。 | ||
|
||
HPKP是首次使用信任(TOFU)技术。 Web服务器第一次通过特殊的HTTP头告诉客户端哪些公钥属于它,客户端将该信息存储在给定的时间段内。当客户端再次访问服务器时,它希望证书链中至少有一个证书包含一个公钥,其指纹已通过HPKP获知。如果服务器提供未知的公钥,则客户端应向用户发出警告。 | ||
|
||
## 如何启用HPKP? | ||
|
||
要为您的站点启用此功能,您需要在通过HTTPS访问站点时返回Public-Key-Pins HTTP标头: | ||
```shell script | ||
Public-Key-Pins: pin-sha256="base64=="; max-age=expireTime [; includeSubDomains][; report-uri="reportURI"] | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# MIME sniffing(MIME 嗅探) | ||
|
||
产生这个问题的主要原因是,http报文中的content-type头在早期版本的浏览器中(例如IE7/6),浏览器并不光会凭靠content-type头进行不同类型的解析,还会`对response内容进行自我解析`,例如text/plain将文件内容直接显示,jpeg格式进行jpeg的渲染,例如传输的content-type头格式为 text/plain ,将文件内容直接显示,response中内容为 | ||
``` | ||
<script> alert(1); </script> | ||
``` | ||
IE浏览器会将其自动嗅探,并认为是text/html类型,并执行相应的渲染逻辑,这就很容易引发XSS攻击。 攻击者可以将图片文件内容写入xss攻击语句,并上传到共享的网站上,当用户请求该文件时,老旧浏览器收到response进行违背content-type的html解析,从而触发MIME嗅探攻击,我所知的解决方法为资源服务器使用与主网站不同的域名,在同源政策下,阻止跨域请求并解析的行为,从而达到阻止这一类嗅探攻击的目的。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# 点劫持保护 | ||
|
||
点击劫持中间件和装饰器提供了简捷易用的,对点击劫持的保护。这种攻击在恶意站点诱导用户点击另一个站点的被覆盖元素时出现,另一个站点已经加载到了隐藏的frame或iframe中。 | ||
|
||
## 示例 | ||
|
||
假设一个在线商店拥有一个页面,已登录的用户可以点击“现在购买”来购买一个商品。用户为了方便,可以选择一直保持商店的登录状态。一个攻击者的站点可能在他们自己的页面上会创建一个“我喜欢Ponies”的按钮,并且在一个透明的iframe中加载商店的页面,把“现在购买”的按钮隐藏起来覆盖在“我喜欢Ponies”上。如果用户访问了攻击者的站点,点击“我喜欢Ponies”按钮会触发对“现在购买”按钮的无意识的点击,不知不觉中购买了商品。 | ||
|
||
## 防御 | ||
|
||
现代浏览器遵循X-Frame-Options协议头,它表明一个资源是否允许加载到frame或者iframe中。如果响应包含值为SAMEORIGIN的协议头,浏览器会在frame中只加载同源请求的的资源。如果协议头设置为DENY,浏览器会在加载frame时屏蔽所有资源,无论请求来自于哪个站点。 | ||
|
||
## 支持的浏览器 | ||
|
||
- Internet Explorer 8+ | ||
- Firefox 3.6.9+ | ||
- Opera 10.5+ | ||
- Safari 4+ | ||
- Chrome 4.1+ |