(1)XSS(跨站脚本攻击Cross Site Scripting)
最常见的攻击WEB网站的方法,攻击者通过注入非法的html标签或者javascript代码,从而当用户浏览该网页时,控制用户浏览器。
可能造成以下影响:
1.利用虚假输入表单骗取用户个人信息;
2.利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求;
3.显示伪造的文章或图片;
防御:
按理说,只要有输入数据的地方,就可能存在XSS危险。
1.httpOnly:在cookie中设置HttpOnly属性后,js脚本将无法读取到cookie信息;
2.过滤:
对输入的地方进行检查(包括前后端都要检查);
HtmlEncode:
当用户输入<script>....</script>进行保存时,将<script>标签进行转换,在展现时, 浏览器会对这些字符转换成文本内容,而不是一段可执行的代码。
(2)CSRF(跨站点请求伪造Cross Site Request Forgeries)
冒充用户发起请求,完成一些违背用户意愿的事情(如修改用户信息、删除评论等)。
可能会造成以下影响:
1.利用已通过认证的用户权限更新设定信息等;
2.利用已通过认证的用户权限购买商品;
3.利用已通过认证的用户权限在留言板上发表评论。
与XSS区别:
1.通常来说CSRF是由XSS实现的;
2.本质上讲,XSS是代码注入问题,CSRF是HTTP问题;XSS是内容没有过滤导致浏览器将攻击者的输入代码执行。CSRF则是因为浏览器在发送HTTP请求时自动带上cookie。
防御:
1.验证码:强制用户必须与应用进行交互,才能完成最终请求;
2.尽量使用post,get太容易被拿来做CSRF攻击;
3.Referer check:请求来源限制;
4.token:token验证的CSRF防御机制是公认最合适的方案。
(3)Click Jacking(点击劫持)
点击劫持,是指利用透明的按钮或链接做成陷阱,覆盖在web页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段,这种行为又称为界面伪装(UI Redressing)。
有两种方式:
1.攻击者使用一个透明的iframe覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。
2.攻击者使用一张图片覆盖在网页上,遮挡网页原有的位置含义。
防御:
1.X-FRAME-OPTIONS,该http响应头字段是用来给浏览器指示允许一个页面可否在<iframe>中,网站可以使用该功能,来确保自己的网站内容没有被嵌入到别人的网站中去。