一、什么是web安全?
web安全,也叫web应用安全,《白帽子讲Web安全》一书中第一章最后有这么一句话讲的很好:“互联网本来是安全的,自从有了研究安全的人,就变得不安全了。”。
1、随着web应用的发展,web安全也在不断地发展
- Web 1.0时代,更多被关注的是服务端的脚本安全问题,如SQL注入等
- Web 2.0时代,2005年Samy蠕虫的爆发,震惊了世界,Web安全主战场由服务端转向浏览器。
2、web安全的本质是信任问题
- 由于信任,正常处理用户恶意的输入导致问题的产生
- 非预期的输入
- 安全问题是一个木桶原理,短的那块板决定了木桶究竟能装多少水,同理,把99%的安全问题都处理了,那么1%的遗留问题就会造成安全问题的那块短板。
3、常见的web安全问题
常见的web安全问题主要是XSS和CSRF两种攻击方式。
二、XSS
1、XSS是什么?
XSS(Cross Site Scripting):跨站脚本攻击,为了与CSS作区别,简称XSS。XSS是web安全发展史上的一个里程碑,是Web 2.0的一个象征性漏洞。
XSS主要是一种注入式的攻击方式。攻击者在页面植入恶意代码,然后访问者访问这些页面,浏览器就会执行攻击者植入的恶意代码,达到攻击访问者的目的,访问者身份就会被窃取。
2、怎么造成XSS?
- (1) 对于用户输入没有严格控制而直接输出到页面
- (2) 对非预期输入的信任
3、XSS的危害
- (1) 盗取各类用户账号,如机器登录账号,用户网银账号、各类管理员账号等
- (2) 窃取数据
- (3) 非法转账
- (4) 挂马,利用XSS漏洞,挂入恶意代码等
4、XSS防御
-
(1)编码
对用户输入的数据进行HTML Entity编码 -
(2)过滤
① 移除用户上传的DOM属性,如onerror等
② 移除用户上传的style节点,script节点、iframe节点等 -
(3)校正
① 避免直接对HTML Entity编码
② 使用DOM Parse转换,校正不配对的DOM标签
三、CSRF
1、CSRF是什么?
CSRF(Cross Site Request Forgey):跨站请求伪造。
2、浏览器的cookie保存机制
- Session cookie,浏览器不关闭则不失效
- 本地cookie,过期时间内不管浏览器关闭与否都不失效
3、CSRF的几种攻击方式
(1) HTML CSRF
HTML CSRF可以发起GET请求的标签,如下:
<link href=' '>
<img src=' '>
<video src=' '>
(2) JSON HiJacking
主要是构造自定义的回调函数,如:
要对http://www.a.com/csrf.html进行csrf攻击,则可以编写如下代码:
<script src='http://www.a.com/json?callback=hijack'></script>
<script>
function hijack(data) {
console.log(data);
}
</script>
- (3) Flash CSRF
4、CSRF的防御
- (1) 增加验证码
- (2) Referer验证
服务器判断页面来源是否正确 - (3) Token验证。尽量把Token放在表单中(构造一个隐藏的input元素),以POST提交,避免Token泄露
四 、CSRF和XSS的区别
- XSS利用对用户输入的不严谨,向页面注入JavaScript语句,然后执行
- CSRF通过伪造受信任用户发送请求,依赖于用户要登录网站