对前端安全性的认识

在前端领域来说,我们常听的两种攻击手段就是XSS和CSRF,我们就来说一说这两种攻击手段

1.XSS

XSS叫做跨站脚本注入攻击,其实应该叫CSS的,因为第一个单词是Cross,但是呢,为了不和CSS样式文件的名字冲突,也就叫了一个这个名字。
这个攻击手段利用的就是你站内的正常途径来注入他的脚本来达到攻击的目的,比较常见的就是博客,评论之类的地方,这时候我们接收到的数据就不是普通的数据,而是一段代码。
同时,对于XSS来说,有两种常见的形式。

  • 通过链接的形式,构造一个恶意的url,里面有一段发送用户cookies的代码,通过邮件或者其他途径发送给别人,当有人点击了这个链接之后就会把自己的cookies信息发送过去。

  • 还有一个形式,比如说我们在写博客的时候,在文章里面嵌入了一段代码,这时候当有用户点开了我这篇博客就会将自己的信息泄露。


那么防御的方法有什么呢?

  1. 将重要的cookie标记为http only.
  2. 对数据进行Html Encode 处理.
  3. 过滤或移除特殊的Html标签或者js事件.

2.CSRF

CSRF也叫做跨站请求伪造,通俗一点来说就是攻击者盗用了你的信息,以你的名义发送请求。可以发消息,卖商品,转账什么的。下面是一个大概的流程:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
  2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

也就是说这种攻击方式,用户要满足两个要求,第一个就是用户 登录了A网站,第二个就是在没有关闭A网站的情况下,又打开了B网站。那么我们要怎么去防御这种攻击呢?

  1. 可以在http中验证referer这个字段来确定发起请求的地址是什么,但是这种方式也不是完全的能禁止攻击,在我所知道的就能够通过伪造referer来欺骗服务器,在最近的项目中也用到了这个。
  2. 第二种方式则是用令牌的方式来进行防御,服务端可以核实这个令牌来考虑响不响应这个请求。

你可能感兴趣的:(对前端安全性的认识)