Web开发安全|青训营笔记

56 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第8天。

一、重点内容

  • 攻击角度
  • 防御角度

二、详细知识点介绍

攻击篇

跨站脚本攻击(XSS)

访问页面时被攻击 主要利用了:开发者盲目信任用户提交的内容。前端工程师直接把用户提交的string转化成dom。 特点:通常难以从UI上感知(因为是暗地执行);窃取用户消息;绘制UI(例如弹窗),诱骗用户点击、填写表单。
存储型XSS(Stored XSS)
恶意脚本存储到数据库中,用户访问页面(读数据)就会被攻击。(危害最大,因为对全部用户可见) 例:
反射型XSS(Reflected XSS)
注入脚本是在服务端进行注入,不涉及数据库,从URL上攻击。
基于Dom的XSS(DOM-based XSS)
完全在浏览器完成整个闭环(发起+执行),不需要服务器的参与。
基于浏览器的XSS(Mutation-based XSS)
拿捏了不同浏览器的渲染DOM机制差异,按浏览器进行区别攻击。

CSRF(Cross-site request forgery)

特点:在用户不知情的情况下,利用用户权限,构造指定HTTP请求,窃取或修改用户敏感信息。

injection注入

不局限于SQL,还可以用CLI,os command。 服务端伪造请求(SSRF)严格而言不是injection,但是原理相似。

Dos

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。

ReDos

基于正则表达式(贪婪模式)不断进行回溯的Dos。

DDos

来自大量僵尸设备的洪水攻击,大量的请求堆积,使得服务器崩溃。

中间人攻击

发生条件:明文传输;信息篡改不可知;对方身份未验证。

防御篇

应对XSS攻击

永远不要相信用户的提交内容,不要将用户提交的内容直接转换成DOM。 现成工具:前端:主流框架都默认防御XSS;google-closure-library。服务端:DOMPurify。

Same-origin Policy(SOP)同源策略

查看/协议、域名、端口

Content Security Policy(CSP)

来自安全源的脚本可以执行,否则直接抛出错误 。禁止eval+inline script。

应对CSRF

判断请求来自于合法来源:origin+referer/服务器接收过页面请求则可以标识。(token需要过期时间,以防某天用户token被窃取)

三、个人总结

安全问题可以说是可能会被用户忽视但是又非常重要的一环,作为开发者,我们应该熟悉如何进行攻击(为了站在攻击者的角度检查被攻击的可能性)和防御。这次课对于一些攻击类型有了初步了解,也学习了常用的防御方法。