XSS攻击(跨站脚本攻击)
XSS 的全称是 Cross Site Scripting 也就是跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了。
Xss会导致挂马,盗取用户cookie,爆发web2.0蠕虫,蠕虫的Ddos攻击。
Xss攻击的类型主要分为反射型,存储型,dom-based型。
反射型:通过reflect植入script脚本,一般出现在用户聊天和邮件。
存储型:该攻击会被存储到数据库,可以存储到存储用户评论的数据库,导致植入了非法留言。
Dom-based:通过eval(location.hash.substr(1))设置,通过在url设置脚本,可以获取cookie。
被攻击的主要原因:对于url提交的参数,过滤不够。
防御XSS攻击的方法:
1.对于输入的url参数过滤,对于普通的双引号(" ")和大于小于号( < >)进行转义,对于script,style,iframe节点进行一个黑名单的过滤,对于一些用户只能输入6-14个字符的内容进行白名单设置。
2.对输出进行编码,cookie设置http-only(js脚本不能读取到cookie)。
3.插件,可以使用 https://cdnjs.com/ 的插件dompurity,可以净化用户插入的恶意脚本,在实际中用到。
CSRF攻击(跨站请求伪造)
CSRF攻击原理
用户先登录网站1
网站1确认登陆者的身份(给客户端cookie)
网站2页面向A网站发起请求(此时因步骤2,带上A网站身份)
Csrf防御的几种方法:
(1)尽量使用post
(2)使用验证码
(3)验证referer,可以在请求头部中,设置referer头部信息,可以在一些被攻击的接口继续设置头部,能够检验到相同头部则通过,但是也容易在传输过程被串改。
(4)token
Csrf之所以成功,因为黑客可以完全伪造用户的请求,利用用户的cookie来跳过安全检测这块。
解决方法:因此我们可以让黑客获取不了这个cookie,意思就是不放在cookie,而是把form表单头部信息随机添加token(或者header头部在添加meta设置name为csrf-token,并且content为token随机数),这个token存储在服务器中,在请求发来时,进行拦截,并且对其检验,不通过则不给登录