XSS CRSF

1. XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。比如获取用户的Cookie,导航到恶意网站,携带木马等。

如何防御:最普遍的做法是转义输入输出的内容,对于引号,尖括号,斜杠进行转义

 1 function escape(str) {
 2   str = str.replace(/&/g, '&')
 3   str = str.replace(/</g, '&lt;')
 4   str = str.replace(/>/g, '&gt;')
 5   str = str.replace(/"/g, '&quto;')
 6   str = str.replace(/'/g, '&#39;')
 7   str = str.replace(/`/g, '&#96;')
 8   str = str.replace(/\//g, '&#x2F;')
 9   return str
10 }

通过转义可以将攻击代码 <script>alert(1)</script> 变成

1 // -> &lt;script&gt;alert(1)&lt;&#x2F;script&gt;
2 escape('<script>alert(1)</script>')

CSP

内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。我们可以通过 CSP 来尽量减少 XSS 攻击。CSP 本质上也是建立白名单,规定了浏览器只能够执行特定来源的代码。

2. CSRF 攻击

  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

防御技巧

  1.验证码

    几乎所有人都知道验证码,但验证码不单单用来防止注册机的暴力破解,还可以有效防止CSRF的攻击。验证码算是对抗CSRF攻击最简洁有效的方法。但使用验证码的问题在于,不可能在用户的所有操作上都需要输入验证码.只有一些关键的操作,才能要求输入验证码。不过随着HTML5的发展。利用canvas标签,前端也能识别验证码的字符,让CSRF生效。

  2.Token

    CSRF能攻击成功,根本原因是:操作所带的参数均被攻击者猜测到。既然知道根本原因,我们就对症下药,利用Token。当向服务器传参数时,带上Token。这个Token是一个随机值,并且由服务器和用户同时持有。当用户提交表单时带上Token值,服务器就能验证表单和session中的Token是否一致。

posted on 2019-03-09 16:15  时光游弋  阅读(193)  评论(0编辑  收藏  举报