第一章:我的安全世界观
安全是一个持续的过程
常见攻击:SQL注入,XSS(跨站脚本攻击)
安全的三要素是安全的基本组成元素,分别为机密性(Confidentiality),完整性(Integrity),可用性(Availability)。
一个安全评估的过程,可以简单地分为4个阶段:1.资产等级划分,2.威胁分析,3.风险分析,4.确认解决方案。
互联网安全的核心问题,就是数据安全的问题。
纵深防御原则:
纵深防御原则包含两层含义:1.要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;2.要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。
第二章:浏览器安全
同源策略:
这一策略极其重要,如果没有同源策略,可能a.com的一段JS脚本,在b.com未曾加载此脚本时,也可以随意修改b.com的页面(在浏览器显示中)。为了不发生混乱,浏览器提出“Origin”(源)的概念。来自不同Origin的对象无法相互干扰。
影响”源”的因素有:
1.host(域名或IP地址)
2.子域名
3.端口
4.协议
需要注意的是,对于当前页面来说,页面内存放JS文件的域并不重要,重要的是加载JS的页面所在的域是什么。举例说明:
a.com通过代码<script src=
http://b.com/b.js ></script>加载了b.com上的b.js。因为b.js是运行在a.com上的,所以b.js的域就是a.com。
在浏览器中,<script>,<img>,<iframe>,<link>等标签都可以跨域加载资源,而不受同源策略的限制。这些带”src”属性的标签每次加载时,实际上是由浏览器发起了一次GET请求。不同于XMLHttpRequest的是,通过src属性加载的资源,浏览器限制了JS的权限,使其不能读,写返回的内容。
对于XMLHttpRequest,它收到同源策略的约束,不能跨域访问资源,在AJAX应用的开发中尤其需要注意到这一点。
第三章:跨站脚本攻击(XSS)
1、XSS简介
跨站脚本攻击,英文全称为Cross Site Script,在安全领域叫做”XSS”。XSS攻击,通常指黑客通过”HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击
。
XSS根据效果的不同可以分为如下几类。
一:反射型XSS
反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫做“非持久型XSS”(Non-persistent XSS)。
二:存储型XSS
存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。也叫做“持久型XSS”(Persistent XSS)。
三:DOM Based XSS
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
2、XSS攻击进阶
可以利用XSS payload来窃取Cookie。
但”Cookie劫持”并非所有的时候都会有效,有的网站可能会在Set-Cookie时给关键的Cookie**植入HttpOnly标识;有的网站会把Cookie与客户端IP绑定**。
3、XSS的防御
一:四两拨千斤:HttpOnly
浏览器将禁止页面的JS访问带有HttpOnly属性的Cookie。只能防止XSS后的Cookie劫持攻击。
二:输入检查
常见的Web漏洞如XSS,SQL Injection等,都要求攻击者构造一些特殊字符,这些特殊字符可能是正常用户用不到的,所以输入检查就有必要了。
三:正确地防御XSS
为了更好设计XSS防御方案,需要了解其本质。
XSS的本质还是一种“HTML注入”,用户的数据被当成了HTML代码一部分来执行,从而混淆了原本的语义,产生了新的语义。
一般来说,存储型XSS的风险会高于反射型XSS。因为存储型XSS会保存在服务器上,有可能会跨页面存在。
第四章:跨站请求伪造(CSRF)
大家可以进一步阅读《白帽子讲Web安全》,慢慢消化,多多学习!