前端面试的常见问题(1):Web安全的XSS攻击和CSRF攻击

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存储在服务器中,在请求发来时,进行拦截,并且对其检验,不通过则不给登录

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。