前端面试之安全那些事(八)

最近在准备面试,感觉好些东西了解,但是了解的深度有限。自己就总结了几个模块,打算强化一下。如果你感觉我的文章对你有帮助,请点赞。如果感觉有哪些不足之处,可以留言。让我们一同进步,学习!!!
最后在说明一下,这个系列我会一直写下去。如果,你有什么好的方向,也可以提出来。

XSS

XSS,又叫跨站脚本攻击。

攻击方式

攻击者通过在页面输入JS脚本代码,恶意篡改客户端网页代码,从而在用户浏览网页的时候,获取用户数据,而达到自己想做的事情的目的。一般攻击者常干以下的事情:

  • 获取被攻击者本地数据,比如cookies,localStorage
  • 劫持前端逻辑
  • 发送请求
类型
  • 反射性:非持久型,通过URL参数直接注入
  • 存储型:持久型,攻击代码存储到后台数据库
  • 基于DOM:直接修改脚本页面结构
反射型

访问攻击者留下的链接,或者诱使受害者点击链接。用户点击打开之后,会访问对应的服务器,服务器收到链接请求之后,会将带有XSS攻击的代码发送给用户,用户执行XSS代码,受到攻击。这也就是早年网络流行的整蛊网站的实现方式,以及社会上不让点击陌生不认识链接的原因。

存储型

服务器保存了攻击者写下的攻击代码。这种情况多发生在可以输入评论的文章的地方。这样他人再次看这篇文章的时候,浏览器就会执行这一段代码攻击代码。

基于DOM

基于 DOM 的 XSS 攻击是指通过恶意脚本修改页面的 DOM 结构,是纯粹发生在客户端的攻击。

防护方式

目前的浏览器内置了防范xss的措施,例如CSP。
防护的前提就是不相信用户输入的任何东西。所以,对于用于用户输入的任何东西都进行检查,过滤,转义。
在xss防御中,输入的检查一般都是检查用户输入的数据中是否包含<,>等特殊字符。同时将其转义其他字符保存。
在输出的时候也会存在这种问题。因此除去富文本的输出外,其他变量的输出,都要使用XSS编码或转义的方式防御XSS攻击。例如利用 sanitize-html 对输出内容进行有规则的过滤之后再输出到页面中。

CSRF

CSRF,又叫跨站请求伪造。攻击者借用受害者的Cookie 信息,伪造成用于,欺骗服务端,进行操作。从而造成未经授权,在用户不知道的情况下对用户的账户进行操作。

防护
判断Referer

在HTTP协议中,Referer记录了该HTTP请求的来源地址。如果发送请求的网址,不是我们要求的地址(白名单地址),则可以对该次请求不响应。因为攻击者,是在自己的网站,借助受害者的信息,模拟了这样一次请求,所以请求地址还是攻击者自己的网站地址。

使用验证码

在用户处理重要请求的时候,加一个验证码。第三方请求网站是无法获取验证码的,又或者是手机验证码。但是过度的使用验证很影响用户体验,所以作为通用的解决方案。

添加Token验证

CSRF的核心就是攻击者,巧妙的借用了受害者的Cookie信息。达到伪造受害者身份的目的。这时候就需要出现一个他无法拿到的数据。Headers请求头。我们在Headers请求中,加入后台随机生成的字符串。来达到身份验证的作用。同时服务端建立拦截器,验证token,如果请求中没有token或者是token内容不正确,则拒绝该次请求。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值