Web开发的安全 | 青训营笔记

102 阅读3分钟

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

今天学习的是Web的开发之旅,在开发中Web安全问题其实很常见,但一旦出现安全问题,就会对用户、公司甚至程序员带来无可挽回的损失。老师从攻击、防御两个视角,简要介绍前端范畴内常见的安全问题,包括XSS、CSRF、SQL注入、DOS等。

攻击

Cross-Site Scripting(XSS)跨站脚本攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序,这些恶意网页程序通常是JavaScript。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

QQ图片20220801204650.jpg

XSS的特点

  • 通常难以从 UI 上感知 (暗地执行脚本)
  • 窃取用户信息 (cookies/token)
  • 绘制 UI (例如弹窗),诱骗用户点击/填写表单 最常见的几种分类:反射型(非持久型)XSS存储型(持久型)XSSDOM型XSS通用型XSS突变型XSS

反射型XSS

反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。

存储型XSS

QQ图片20220801210751.jpg

DOM型XSS

QQ图片20220801211225.jpg

突变型XSS

其攻击流程:将拼接的内容置于innerHTML这种操作,在现在的WEB应用代码中十分常见,常见的WEB应用中很多都使用了innerHTML属性,这将会导致潜在的mXSS攻击。从浏览器角度来讲,mXSS对三大主流浏览器(IE,CHROME,FIREFOX)均有影响。

QQ图片20220801211625.jpg

CSRF 跨站域请求伪造

  • 在用户不知情的前提下
  • 利用用户权限 (cookie)
  • 构造指定 HTTP 请求,窃取或修改用户敏感信息

SQL 注入

QQ图片20220801212402.jpg Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

Sql 注入带来的威胁主要有如下几点

  • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
  • 绕过认证,列如绕过验证登录网站后台。
  • 注入可以借助数据库的存储过程进行提权等操作

QQ图片20220801212626.jpg

Dos

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

Dos有基于正则表达式的Dos,往往就是由于贪婪造成的。

QQ图片20220801213038.jpg

DDoS (Distributed Dos)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

攻击特点:

  • 直接访问 IP
  • 任意 API
  • 消耗大量带宽 (耗尽)

还有一种就是中间人攻击

QQ图片20220801213504.jpg

防御

XSS

措施:

  • 永远不要信任用户的提交内容
  • 不要将用户提交内容直接转换成 DOM

QQ图片20220801213703.jpg

CSRF

QQ图片20220801213821.jpg

DDoS

QQ图片20220801213917.jpg

尾声

  • 安全无小事
  • 使用的依赖 (npm package,甚至是 NodeJS)可能成为最薄弱的一环 !!npm install除了带来了黑洞,还可以带来漏洞
  • 保持学习心态