常见攻击
跨站脚本攻击(XSS)
- 攻击原理:通过注入包含可被浏览器解析的标签(如
script),让浏览器对标签内容解析为脚本并执行。 - 攻击方式:通过向数据库提交恶意代码(常见于社区、论坛网站);创建包含恶意代码的 URL 由前端执行。
- 预防方式
- 服务端:设置 CSP(内容安全策略),拦截不安全的数据,设置 HTTP-only 避免脚本获取
- 服务端渲染:在使用数据拼接 HTML 时对数据进行转义处理
- 浏览器渲染:在使用 innerHTML/v-html 时对文本进行转义处理
跨站请求伪造(CSRF)
- 攻击原理:若网站仅通过
cookie作为用户身份验证,则服务端只能确保请求的来源而无法确保由是否由用户本身发出 - 攻击方式:攻击网站(B)向使用简单授权的网站(A)发送请求,若用户在 A 的
cookie未过期,则可能遭受伪造攻击。 - 预防方式
- 同源检测:检测
Origin或Referer字段拦截非同源请求 - 凭证检测:使用
Token对用户进行检测而非简单的cookie - 双重 cookie:在发送请求时携带 cookie 作为 URL 参数,后端验证 cookie 与参数是否相同 (利用 CSRF 攻击无法获取 cookie 值的特点)
- 同源检测:检测
SQL 注入
- 攻击原理:通过注入包含 SQL 处理的数据作为普通字符串,在对 SQL 语句进行字符串拼接的时候,直接使用为转义的内容并执行
- 攻击方式:通过在向数据库提交信息的场景提交恶意字符串
- 预防方式
- 对提交内容进行特殊字符过滤
- 语法上禁止 SQL 语句拼接,严格使用参数绑定
分布式拒绝服务攻击(DDos)
- 攻击原理: 处于不同位置的多个攻击者同时向一或多个目标发起请求
- 攻击方式: 多台设备同时大量发送请求导致服务器瘫痪
- 攻击类型
- 针对漏洞: 针对特定漏洞的目标有效, 发动攻击的成本较低但要求较高
- 占用业务: 针对性能消耗较高的业务导致业务系统性能出现瓶颈
- 消耗带宽: 大规模连续请求服务器以消耗服务带宽
- 预防方式
- 网络层防护
- SYN Flood 攻击防护:实时检测过滤畸形包和不符合规则的报文,同时通过 SYN Cookie 校验、重传验证等方式完成客户端的协议行为验证,阻断攻击。
- ACK Flood 攻击防护:实时存储连接表信息,通过对接收到的 ACK 报文进行智能校验,判断其是否为合法报文,如不合法,则直接丢弃。
- ICMP Flood 攻击防护:实时统计到达目的 IP 的流量,超过设定阈值则直接丢包。
- UDP Flood 攻击防护:通过速率限制、UDP 报文匹配等方式防御 UDP Flood
- 反射型 DDoS 攻击防护:直接过滤来自常用的反射端口(如 NTP、Memcache、SSDP 等)的报文防御反射型。
- 应用层防护
- 威胁情报库:通过大数据分析平台,实时汇总分析攻击日志,提取攻击特征并进行威胁等级评估,形成威胁情报库。
- 个性化策略配置:如请求没有命中威胁情报库中的高风险特征,则通过 IP 黑白名单、访问频率控制等防御攻击。
- 日志自学习: 实时动态学习网站访问特征,建立网站的正常访问基线。
- 人机校验:当请求与网站正常访问基线不一致时,启动人机校验(如 JS 验证、META 验证等)方式进行验证,拦截攻击。
- 对 Slow Headers 攻击,通过检测请求头超时时间、最大包数量阈值进行防护。
- 对 Slow Post =攻击,通过检测请求小包数量阈值进行防护。
- 流量监控、动态扩容
- 网络层防护
时序攻击
- 攻击原理: 通过观测处理时间来推导结果
- 如: 比对字符串时按位对比,当出现不同项后则直接结束,因而可以通过比对时长判断相同位数
- 如何避免
- 增加一次随机处理
- 对处理时间采用均匀返回