1.XSS攻击
XSS攻击:(Cross Site Scripting)跨站脚本攻击。在渲染DOM树的过程中执行了不在预期内的js代码,就发生了XSS攻击。
攻击样例:在一些博客网站,发表一篇文章的时候,在文章中加入<script>alert('XSS攻击')</script>
这种用script标签包含着的js语句。发表成功之后,当别人访问你的这篇文章的时候,就会自动执行alert('XSS攻击')
这段代码。这样就属于xss攻击。更严重的,就在script标签中,获取你的cookie,然后通过ajax发送给攻击者的服务器,然后他就可以拿到了你的cookie,盗取到了你的账号。
攻击原理:因为一般那些发表文章的那些,最后都是通过innerHTML的方式来显示的。
**防御:**在储存的时候,将<
转变成<
,将>
转成>
,这样浏览器就识别不了script标签了。
2.CSRF攻击
CSRF攻击: Cross-site request forgery),中文名称:跨站请求伪造攻击。即攻击者盗用了你的身份,以你的身份去发送请求。
被攻击前提:
1.你登陆了某个网站A,本地生成该网站的cookie
2.没有退出网站A,直接访问危险网站B
攻击样例: 你登陆了一个银行网站A,它是以GET请求来完成银行转账功能的,例如:‘http://www.mybank.com/Transfer.php?toBankId=11&money=1000。危险网站B,它里面有一段危险HTML的代码:
< img src =http://www.mybank.com/Transfer.php?toBankId=11&money=1000 >
你登陆了银行网站A之后,亦或者你银行网站A本地的cookie还没有过期,你就去访问危险网站B,那么你的银行账户就会少了1000块,自动转给了BankId为11的用户。因为该银行网站是以GET请求来完成银行转账功能的,而img标签,就是对src上的网址发送GET请求的,浏览器请求银行网站A的时候,会自动携带本地的cookie。所以就利用了你的身份转账了1000块。
当银行网站A改成POST请求来完成转账功能的化,也会被黑客进行CSRF攻击。因为黑客也可以在他的网站上实现POST请求。不过POST请求会让黑客实现CSRF攻击比较困难一些。
CSRF防御: 使用POST。增加验证:例如密码、手机验证码、指纹等。