这是我参与「第四届青训营 」笔记创作活动的第6天
攻击篇
XXS(跨站脚本攻击)
什么是XXS?
- 跨站脚本攻击(Cross-Site Scripting,XSS) 是指通过存在安全漏洞的Web 网站注册用户的浏览器内运行非法的 HTML标签或 JavaScript 进行的一种攻击。动态创建的 HTML部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。
XXS的攻击手段
- XSS是通过浏览器对网站页面插入恶意交互脚本获取其他用户浏览器当前渲染的账户信息。也会利用网页对用户提交信息的盲目信任像服务器传输脚本木马攻击。通常也伪装成网站类似UI如弹窗表单,诱骗用户点击/填写表单,切去token/cookie等用户隐私,而且通常暗地执行脚本,难以从UI上察觉。
SQL注入攻击
什么是SQL注入攻击?
SQL注入(SQLInjection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
CSRF攻击(跨站点请求伪造)
什么是CSRF攻击?
- 跨站点请求伪造(Cross-Site Request Forgeries,CSRF) 攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。听着和XSS差不多,但两者是有区别的,CSRF是通过利用了用户的数据伪造了请求,从而修改了用户的数据。而XSS是通过设置脚本来攻击的。
DoS和DDoS
什么是DOS攻击?
- DoS是Denial of Service的简称,即拒绝服务最常见的DoS攻击有计算机网络宽带攻击和连通性攻击。这种攻击方式是通过构造特定请求,来让服务端无法处理激增的大量请求,导致正常的请求无法被处理甚至宕机。
DoS的实现原理
- 要理解Dos攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认; 第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。 好,在这里我们普及一个概念: 半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。 所以它就是利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。
DoS攻击分类
- ReDoS:基于正则表达式的DoS:
- L-DoS (Logical DoS) 通常以循环执行逻辑、执行SQL登录、数据库写入、文件备份等大量耗时的同步操作。
- DDoS (Distributed DoS):通过服务器任意API直接访问IP,占用带宽使得服务器宕机。DDoS利用TCP的三次握手原理,反复来回交换数据占用带宽。
- 中间人攻击: 俗称“肉鸡”,利用Web的明文请求,无法验证请求端身份与其请求体是否含篡改内容。
DDoS攻击
- 分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。
DDoS攻击的原理
- 和Dos类似,但是此时他发送的攻击设备是通过大量的僵尸设备发送正确的请求,从而消耗服务器的带宽,达到攻击的目的。
防御篇
XSS防御
- 永远不要新人用户提交的内容,即不要直接将用户内容转为动态DOM,而是用String形式存储。
- 当用户应用需求需要使用到动态DOM时间,应该设置逻辑对上传DOM和解析DOM进行转义
- 对于SVG文件的上传应该尤其的注意防护,svg文件可以内嵌JS脚本
- 尽量不要允许用户自定义跳转、自定义样式也不行
CSRF防御
- 避免GET接口和POST接口合并等偷懒行为
- 防护SameSIte Cookie信息泄露,SameSite Cookie依赖于第三方的Cookie请求,需要允许第三方域名采集Cookie.
- 防御CSRF需要注意逐级施加权限限制
对SQL的防御
- 最小原则:避免使用sudo || root 命令
- 建立ip白名单,拒绝异常rm操作
- 对URL类型参数、域名、IP加逻辑检验,限制异常请求———防范内网被突破
对DoS攻击的防御:
ReDoS
- 减少允许用户使用正则表达式请求
- 增加校验, 对代码做扫描 +正则性能测试
L-DoS
- 限流: 限制流量的异常波动,对于异常IP封锁。
- 并不是非黑即白: 有时候需要请求量超过阈值才能检测出L-DoS
- 分析代码的性能瓶颈:同步调用、串行逻辑、CPU密集操作
DDoS
- 过滤:负载均衡、API网关
- 抗量:CDN、快速扩容、 非核心服务降级备战
中间人防御
- HTTP特性: 可靠性-明文加密,完整性:MAC验证;不可抵赖性-数字签名
- HTTPS加密:在三次握手时进行hash加密,利用公钥和证书进行数字签名校验。
- 将HTTP主动升级到HTTPS:需要之前要有一次HTTPS访问
- 当静态资源被劫持篡改了,可以运用SRI对资源做hash验证