Web 开发安全(攻击篇)| 青训营笔记

136 阅读4分钟

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

跨站脚本攻击(XSS)

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
如填写表单信息时,如果盲目相信用户的提交内容,那么假如用户填写了类似的信息,然后直接通过element.innerHTML把用户提交的代码存起来的话,那么工具者就可以实现攻击了。

XSS特点:

  • 通常难以从UI上发现,因为是在暗地里执行脚本
  • 可以窃取用户信息(cookie、token)
  • 还可以绘制UI(如弹窗),诱骗用户点击

Stored XSS

把恶意脚本存储在被攻击网站的数据库中。当其他人访问页面时,回去读数据,然后就会执行到数据库中的恶意脚本,从而被攻击。危害最大,对全部用户可见

Reflected XSS

  • 不涉及数据库

  • 从URL上进行攻击

DOM-based XSS

  • 不需要服务器的参与

  • 恶意攻击的发起、执行,都在浏览器完成

和Reflected XSS很像,不过,Reflected XSS的恶意脚本是注入到服务器中,而DOM-based XSS的恶意脚本是注入到浏览器中,而且攻击不需要服务器的参与

Mutation-based XSS

  • 利用浏览器渲染DOM的特性(独特优化)
  • 按浏览器进行攻击

跨站伪造请求CSRF

CSRF攻击:在用户不知情的前提下,利用用户权限(cookie),构造HTTP请求,窃取或修改用户敏感信息。

经典例子:银行转账
首先,a为了转账给b10000元,于是a登录银行页面进行转账操作, 还没有推出登录,又收到中奖通知链接(假的或者是只有小额鱼饵),a点击链接,并点击领奖按钮。然后发现钱被转走了100000元了。
CSRF攻击原理:利用cookie的自动携带特性,在其他网站向你的网站发送请求时,如果网站中的用户没有退出登录,而发送的请求又是一些敏感的操作请求(如转账),则会给用户带来巨大的损失。

注入攻击injection

SQL注入

SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。

在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

DOS(拒绝服务)

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

ReDOS

正则表达式拒绝服务攻击。当开发人员使用了正则表达式来对用户输入的数据进行有效性校验, 而编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。

正则表达式所引发的DoS攻击(ReDoS)

Distributed DOS(DDoS)

分布式拒绝服务。短时间内,来自大量僵尸设备的请求,服务器不能及时响应全部请求,导致请求堆积,进而引发雪崩效应,无法响应新请求。

攻击特点:

  • 直接访问IP

  • 任意API

  • 消耗大量带宽(耗尽)

中间人攻击

中间人攻击(通常缩写为MitM或MiM)是一种会话劫持网络攻击。 黑客拦截数字共享的信息,通常是作为窃听者或冒充他人。这种类型的攻击非常危险,因为它可能会导致一些风险,如信息被盗或虚假通信,通常很难检测到这些危险,因为情况对合法用户来说似乎完全正常。