《Web前端黑客技术解密》读书笔记(第九、十章)

2016-11-23  本文已影响42人  艾特TT

本文地址:http://www.jianshu.com/p/ebb1db302ef5

第九章 Web蠕虫

主要分三类:XSS蠕虫CSRF蠕虫Clickjacking蠕虫,还有第四类 文本蠕虫

Web 蠕虫思想

XSS 蠕虫

CSRF 蠕虫

与XSS蠕虫基本类似,只不过用的是CSRF,攻击代码放在攻击者页面中,目标网站都包含攻击者的URL

ClickJacking 蠕虫 ,界面劫持

发动ClickJacking蠕虫攻击,必须满足以下两个条件

第十章 关于防御

三个方面防御

浏览器厂商的防御

HTTP响应的X-头部

用于防御ClickJacking,有两个值:

有三个值:

比如现在的问题,IE下CSS的expression可以执行js,html中的script标签,标签中on事件、标签style属性、标签src/href/action等属性都可以执行js,没有分离,导致很多安全问题,CSP就是解决这些问题

Chrome支持CSP策略的头部是X-WebKit-CSP,而非标准的X-Content-Security-Policy,不过具体策略都一样

CSP语法格式如下:

X-Content-Security-Policy:[指令1] [指令值1] [指令值2];[指令2] [指令值1] [指令值2];....

具体指令参考书本 P339,

主要有指令有:default-srcscript-srcobject-srcimg-srcmedia-srcframe-srcfont-srcconnect-srcstyle-srcreport-uri

指令值有:

(1)、*表示允许所有的来源
(2)、*.foo.com表示来源foo.com的所有子域内容
(3)、https://foo.com表示来源https协议下的foo.com

以下特殊指令值,单引号必须有

(1)、'none'表示空集,即外部资源不被加载
(2)、'self'表示仅同域内的资源可加载
(3)、'unsafe-inline'表示允许内嵌JS/CSS,如<script>内的、javascript:内的、on事件内的、<style>内的等,默认不被允许
(4)、'unsafe-eval'表示允许evalsetTimeoutsetIntervalFunction等可以直接执行字符串的函数
(5)、data指令,允许data:协议

示例一:不允许任何外部资源加载,仅允许内嵌脚本执行

// 响应头如下
X-Content-Security-Policy: default-src 'unsafe-inline' 'self'

示例二:仅允许白名单外部资源加载,不允许内部脚本执行

// 响应头如下
X-Content-Security-Policy: default-src *.foo.com

Web厂商的防御

域分离

将业务放在不同的域下,子域不要设置document.domain相同根域

安全传输,通过HTTPS

安全的Cookie,身份认证相关的cookie严格设置https,并且为HttpOnly标记

优秀的验证码

慎防第三方内容

XSS防御方案

以下地方需要注意,具体参考书本P345

CSRF防御方案

界面操作劫持防御

即通过js的方式防止页面被iframe嵌入

方法一(比较容易攻破):

if(top.location!=self.location){
  top.location = self.location;
}

方法二(更安全):

<style>
  html{display:none;}
</style>
<script>
  if(self==top){
    document.documentElement.style.display = 'block';
  } else {
    top.location = self.location;
  }
</script>

用户的防御

附原书购买地址: http://item.jd.com/11181832.html

上一篇 下一篇

猜你喜欢

热点阅读