一二面_安全类

一二面_安全类

前端安全设计几种分类?两种

CSRF

基本概念和缩写

CSRF,通常称为跨站请求伪造,英文名 Cross-site request forgery 缩写 CSRF

攻击原理*

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IshbP27S-1622903042976)(./一二面-安全类/1.jpg)]

用户是网站A的一个注册用户(有用户名和密码),通过身份认证登录网站A,如果身份是正确的就下发cookie,这个cookie就保存在用户的浏览器当中,这就是完成了一次身份认证的过程;用户又访问了一个网站B,这个网站B在下发用户页面的时候存在一个引诱点击(往往是一个链接),这个链接就是指向网站A的一个API接口,尤其是网站A是一个GET类型,当用户禁不住引诱点击之后,这个点击就访问到了A网站,了解cookie原理的话,访问A网站的链接,浏览器会自动上传cookie,上传cookie之后,网站A拿到cookie对身份进行了确认,发现是合法用户,就执行了这个接口的动作,比如像之前微博出现过一次很重大的CSRF攻击,添加粉丝量添加关注。

面试的时候能把这个原理说清楚就好了,说清楚要掌握一个重点,就是用户一定在注册网站登陆过,如果没登录过,用户访问这个接口的话,网站A会提示他注册完登录,所以CSRF能够造成攻击的原理是:第一,它网站中有一个接口存在这种漏洞;第二个是这个用户在这个注册网站A上之前确实登陆过。这是能实现CSRF攻击的不可缺少的两大因素。

防御措施*

1.Token验证

加Token验证,在访问接口的时候,浏览器只是自动上传了cookie,但是没有手动地上传一个Token,Token是只要你访问这个网站的话,服务器会自动地向你的本地存储一个Token,在你访问各种接口,你没有带这个Token的话,它就不能让你通过验证,如果向刚才那样点击了引诱链接,这个链接只会自动携带cookie,但不会自动携带Token,就不会验证成功,所以就避免了攻击。

2.Referer验证

Referer指的是页面来源,服务器判断这个页面来的是不是我这个站点下面的页面,如果是的话,我就执行你的动作,如果不是一律拦截。

3.隐藏令牌

和Token验证差不多,比如说隐藏在HTTP的head头中,不会放在链接上,这样的话就会做得比较隐蔽,和Token本质上没有太大的区别,只是使用方式上有点差别。

XSS

基本概念和缩写

XSS,cross-site scripting跨域脚本攻击

攻击原理(自己查找资料看一下)

和CSRF区别是,它不需要你做任何的登录认证,它的核心原理就是向你的页面注入脚本。比如说评论区就是注入XSS的最好的方式,它可以在你的提交区里面写上script标签,写image标签,image上面加事件,总之它的方法就是利用你合法的渠道向你页面注入JS,这就是XSS的攻击原理

防御措施(自己查找资料看一下)

核心的宗旨就是让你的XSS不可执行,至于手段自己查一下资料

面试官有时候还会问你CSRF和XSS的区别?

XSS是向你页面注入JS去运行,JS函数体里面做它想做的事情,CSRF是利用本身的漏洞去帮你自动执行那些接口,这两个攻击方式是不一样的,而且CSRF是依赖于用户要登录网站,二者完全不是一回事。

你可能感兴趣的:(安全,javascript)