网络安全

Posted by Leonsux on May 25, 2022

网络安全

XSS 攻击

跨站脚本攻击,将恶意脚本注入到页面中,例:<script>alert('warning')</script>

XSS攻击有两种

一种是通过修改浏览器 URL 导致脚本被注入页面,这种一般会被 chrome 浏览器自动防御

另一种是通过输入框将脚本提交到后端并注入数据库,需要我们手动防御。前端后都需要对数据进行合理的转译。

const xss = require('xss');
xss('<script>alert('warning')</script>);

CSRF 攻击

跨站请求伪造,诱导受害者进入第三方网站,在第三方往会展中向被攻击网站发送跨站请求。

  • 受害者登录a.com,并保留了登录凭证(Cookie)。
  • 攻击者引诱受害者访问了b.com。
  • b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
  • a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
  • a.com以受害者的名义执行了act=xx。
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。

防御手段

同源检测:服务端检测 Head 中的域名,过滤请求来源。

CSRF Token:服务端生成token并存放于session中,请求时从session取出token与请求中的token进行对比。

双重cookie:用户访问网站时,向请求域名注入一个 cookie,内容为随机字符串,前端发送请求时在url上携带此cookie为参数,后端验证 参数重的字段和请求cookie是否一致。

Samesite Cookie:设置了 Samesite=Strict 后,任何跨域请求都不会携带此 Cookie。

预防

严格管理上传接口,防止任何预期之外的上传内容(比如 HTML)。

添加 Header X-Content-Type-Options: nosniff (禁用浏览器的Content-Type猜测行为) 防止黑客上传 HTML 内容的资源(比如图片)被解析为网页。

对用户上传的图片进行校验,不要直接使用用户上传的图片链接。

当用户打开其他用户填写的链接时,告知风险。(现在很多网站都这么做,提到第三方网站时会有提示)。

DOS、DDOS 攻击

向目标网站发送大量请求,导致服务器过载。DDOS为攻击者控制多台主机对目标服务器进行攻击。

服务器扩容。实时监控,封闭恶意请求ip。

页面劫持

攻击者在数据请求是对传输的数据进行修改,注入广告;对网站域名进行泛域名解析以进行重定向。

HTTP 换成 HTTPS 即可防范。

点击劫持

攻击者将目标网站作为内嵌页(iframe)嵌入攻击者的恶意网站中,并且将 iframe 设置为完全透明,定位到恶意网站中某个诱导点击位置上。当用户点击该位置时,实际上点击的是 iframe。

可以通过在响应头中设置 X-Frame-Options来阻止页面在 iframe 中打开。

DENY: 始终禁止在 frame 中显示此页面。 SAMEORIGIN: 允许在和父文档同源的 frame 中显示此页面。 ALLOW-FROM domain: 允许在来自给定域的父文档的 frame 中显示此页面。

参考文章

https://tech.meituan.com/2018/10/11/fe-security-csrf.html

https://juejin.cn/post/7023881916940025892#heading-22