文章目录
常见网络攻击类型及防护手段
之前写过一遍网络安全的文章[一文大白话讲清楚web常见的攻击方式和应对策略],由于时间问题,类型和方案讨论相对较少,这篇文章做一个补充(https://blog.csdn.net/xiaobangkeji/article/details/144771218?spm=1011.2415.3001.5331)
网络攻击是指利用网络漏洞或技术手段,对网络系统、设备、数据或用户进行未授权访问、破坏、窃取或干扰的行为。以下按攻击目标和原理分类,详细阐述常见攻击类型及防护手段。
一、拒绝服务攻击(DoS/DDoS)
攻击原理
通过大量恶意流量或请求占用目标系统的资源(带宽、CPU、内存等),使其无法响应正常用户的请求,最终导致服务瘫痪。
- DoS(Denial of Service):单点发起攻击,流量规模有限,易被拦截。
- DDoS(Distributed DoS):利用大量被控制的"僵尸机"(肉鸡)分布式发起攻击,流量规模大(可达数百Gbps),危害极强。
常见攻击形式
- 网络层DDoS:如SYN Flood(伪造大量TCP连接请求,耗尽服务器半连接队列)、UDP Flood(发送海量UDP数据包,占用带宽)。
- 应用层DDoS:如CC攻击(模拟正常用户发送大量复杂HTTP请求,耗尽应用服务器资源,如反复刷新动态页面)。
防护手段
-
流量清洗与分流
- 部署抗DDoS设备(如黑洞路由、流量清洗中心),通过特征识别过滤恶意流量。
- 利用CDN(内容分发网络)分散流量,减少源站直接暴露的风险。
-
资源扩容与负载均衡
- 采用集群部署和负载均衡(如Nginx、F5),将流量分散到多台服务器。
- 动态扩容云服务器(如AWS Auto Scaling),应对突发流量高峰。
-
规则防护
- 防火墙或WAF配置阈值限制(如单IP每秒请求数上限),拦截高频恶意IP。
- 针对SYN Flood,启用TCP半连接队列优化或SYN Proxy(代理处理TCP握手)。
二、注入攻击(SQL注入、命令注入等)
攻击原理
攻击者通过在用户输入(如表单、URL参数)中插入恶意代码(如SQL语句、系统命令),欺骗服务器执行非预期操作,窃取或篡改数据。
常见攻击形式
- SQL注入 :在登录表单的"用户名"字段输入
' OR '1'='1--
,可能绕过验证直接登录(拼接后的SQL语句条件恒为真)。 - 命令注入 :在调用系统命令的输入点插入命令。例如,若服务器代码用
ping $user_input
执行命令,输入8.8.8.8; rm -rf /
可能导致文件被删除。
防护手段
-
输入验证与过滤
- 对用户输入进行严格校验(如长度、格式、类型),仅允许符合规则的字符。
- 使用"白名单"机制(允许的字符/格式),而非"黑名单"(易被绕过)。
-
参数化查询(防SQL注入核心)
- 数据库操作时,使用参数化语句(如SQL的
PreparedStatement
、Python的sqlite3
参数绑定),将用户输入作为数据而非代码解析。 - 示例(安全的SQL):
SELECT * FROM users WHERE username=? AND password=?
(参数通过占位符传入)。
- 数据库操作时,使用参数化语句(如SQL的
-
最小权限原则
- 数据库账户仅授予必要权限(如查询操作不授予
DROP
、DELETE
权限),降低攻击影响。
- 数据库账户仅授予必要权限(如查询操作不授予
-
禁用危险功能
- 关闭应用中不必要的系统命令调用(如PHP的
exec()
、Python的os.system()
);若必须使用,严格过滤输入中的特殊字符(如;
、|
、&
)。
- 关闭应用中不必要的系统命令调用(如PHP的
三、跨站脚本攻击(XSS)
攻击原理
攻击者向网页中注入恶意JavaScript代码,当其他用户访问该页面时,代码在用户浏览器中执行,窃取Cookie、会话ID或诱导用户操作(如转账)。
常见攻击形式
- 存储型XSS :恶意代码被存储在服务器(如数据库、评论区),所有访问该页面的用户都会触发(如论坛评论注入
<script>stealCookie()</script>
)。 - 反射型XSS :恶意代码通过URL参数传递,服务器直接"反射"到页面中(如
http://example.com/search?query=<script>...</script>
),仅诱导用户点击链接时触发。 - DOM型XSS :恶意代码不经过服务器,直接通过客户端JavaScript操作DOM执行(如
document.write(location.hash)
,攻击者构造#<script>...</script>
)。
防护手段
-
输入过滤与输出编码
- 对用户输入的HTML、JavaScript标签进行过滤(如移除
<script>
、onclick
等危险标签/属性)。 - 输出到页面时,对特殊字符进行编码(如将
<
转为<
,>
转为>
),使恶意代码无法被浏览器解析。
- 对用户输入的HTML、JavaScript标签进行过滤(如移除
-
内容安全策略(CSP)
- 在HTTP响应头中设置
Content-Security-Policy
,限制脚本的加载和执行来源(如仅允许同源脚本)。 - 示例:
Content-Security-Policy: default-src 'self'; script-src 'self'
(仅允许加载本站的脚本)。
- 在HTTP响应头中设置
-
HttpOnly与Secure属性
- 对敏感Cookie(如
session_id
)设置HttpOnly
,禁止JavaScript通过document.cookie
读取,防止XSS窃取。 - 结合
Secure
属性,确保Cookie仅通过HTTPS传输。
- 对敏感Cookie(如
四、跨站请求伪造(CSRF)
攻击原理
攻击者诱导已登录目标网站的用户,在不知情的情况下向该网站发送恶意请求(如转账、修改密码),利用用户的身份权限执行操作(依赖浏览器自动携带Cookie的特性)。
攻击示例
用户登录银行网站(bank.com
)后,被诱导访问攻击者的恶意页面(evil.com
),页面自动提交表单:
html
<form action="https://bank.com/transfer" method="POST">
<input type="hidden" name="to" value="attacker">
<input type="hidden" name="amount" value="10000">
</form>
<script>document.forms[0].submit();</script>
浏览器会自动携带bank.com
的Cookie,银行服务器误认为是用户操作,执行转账。
防护手段
-
CSRF Token验证
- 服务器在用户会话中生成随机Token(如
csrf_token=xyz123
),嵌入表单或请求头。 - 客户端提交请求时必须携带该Token,服务器验证Token与会话中的值是否一致,不一致则拒绝请求。
- 服务器在用户会话中生成随机Token(如
-
SameSite Cookie属性
- 在Cookie中设置
SameSite=Strict
(禁止第三方网站携带Cookie)或SameSite=Lax
(仅允许部分安全请求携带),从根源阻止Cookie被滥用。
- 在Cookie中设置
-
验证Referer/Origin头
- 服务器检查请求的
Referer
(来源URL)或Origin
(来源域名),仅允许来自信任域名(如bank.com
)的请求。
- 服务器检查请求的
五、中间人攻击(MITM)
攻击原理
攻击者在通信双方(如用户与服务器)之间插入"中间节点",拦截、篡改或窃取通信数据,而双方可能误以为在直接通信。常见场景:公共WiFi、未加密的HTTP连接。
攻击流程
- 用户请求连接服务器(如
http://example.com
); - 攻击者拦截请求,伪装成用户向服务器发送请求;
- 服务器响应后,攻击者拦截响应,伪装成服务器向用户发送(可篡改内容);
- 双方通信的数据(如账号密码)被攻击者窃取。
防护手段
-
强制使用HTTPS
- HTTPS通过TLS加密传输数据,并使用数字证书验证服务器身份,防止数据被篡改或窃取。
- 配置
HSTS
(HTTP Strict Transport Security)响应头,强制浏览器仅通过HTTPS连接(避免HTTP降级攻击)。
-
证书验证
- 客户端(如浏览器)严格验证服务器证书的有效性(是否过期、是否由可信CA颁发),拒绝无效证书的连接。
-
加密通信工具
- 敏感通信使用VPN(虚拟专用网络)或端到端加密工具(如Signal、Telegram Secret Chat),避免数据在公共网络中暴露。
六、密码攻击
攻击原理
通过破解用户密码获取账户访问权限,常见手段包括:
- 暴力破解:尝试所有可能的字符组合(效率低,适用于短密码)。
- 字典攻击 :使用预先准备的密码字典(如常见密码
123456
、password
)批量尝试。 - 彩虹表攻击:通过预计算的哈希值与目标密码哈希比对,快速破解(针对未加盐的哈希)。
防护手段
-
强密码策略
- 强制用户设置复杂密码(长度≥8位,包含大小写字母、数字、特殊字符),并定期更换。
-
哈希加盐存储
- 服务器不存储明文密码,而是对密码进行哈希处理(如SHA-256),并加入随机"盐值"(Salt),使彩虹表失效。
- 示例:
hash = SHA256(password + salt)
(盐值需随机且唯一,与哈希值一同存储)。
-
账户锁定与验证码
- 连续多次输错密码后,暂时锁定账户(如10分钟)或要求输入图形验证码,阻止自动化破解工具。
-
双因素认证(2FA)
- 除密码外,要求用户提供第二重验证(如短信验证码、谷歌验证器、硬件Key),即使密码泄露,攻击者仍无法登录。
七、恶意软件攻击
攻击原理
恶意软件(Malware)是指具有恶意功能的程序,通过感染设备窃取数据、破坏系统或控制设备。
常见类型
- 病毒:依附于其他文件,通过复制传播,破坏文件或系统(如CIH病毒)。
- 蠕虫:无需宿主文件,可自主通过网络传播(如勒索蠕虫WannaCry,利用永恒之蓝漏洞)。
- 木马:伪装成正常软件,窃取敏感信息(如远程控制木马灰鸽子)。
- 勒索软件:加密用户文件,要求支付赎金才解密(如Locky、Ryuk)。
防护手段
-
终端安全软件
- 安装杀毒软件(如卡巴斯基、火绒)或EDR(终端检测与响应)工具,实时监控并清除恶意软件。
-
系统与软件更新
- 及时修复操作系统和应用软件的漏洞(如Windows Update、浏览器补丁),避免被蠕虫或勒索软件利用(如WannaCry依赖未修复的SMB漏洞)。
-
安全意识培训
- 禁止点击不明邮件附件、下载非官方软件;开启文件扩展名显示,警惕伪装为"图片.exe"的木马。
-
数据备份
- 定期备份重要数据(离线备份+云备份),即使被勒索软件加密,也可通过备份恢复,无需支付赎金。
八、ARP欺骗(局域网攻击)
攻击原理
在局域网中,攻击者通过发送伪造的ARP(地址解析协议)报文,篡改目标设备的ARP缓存(IP与MAC地址映射表),使目标的流量被转发至攻击者设备,实现监听或断网。
攻击示例
- 攻击者向局域网内的主机发送"网关IP对应的MAC是攻击者MAC"的伪造ARP包,主机的流量会被发送到攻击者设备,再由攻击者转发至真正的网关(监听数据)。
防护手段
-
静态ARP绑定
- 在主机和路由器中手动绑定IP与MAC地址(如Windows使用
arp -s 192.168.1.1 AA-BB-CC-DD-EE-FF
),防止ARP缓存被篡改。
- 在主机和路由器中手动绑定IP与MAC地址(如Windows使用
-
ARP防火墙
- 安装ARP防火墙工具(如360ARP防火墙),监控并拦截异常ARP报文(如频繁发送的伪造包)。
-
VLAN隔离
- 将局域网按功能划分VLAN(虚拟局域网),限制ARP报文的传播范围,减少攻击影响。
总结
网络攻击形式多样,但核心目标通常是窃取数据、破坏服务或控制设备。防护需采用"多层防御"策略:
- 技术层面:部署防火墙、WAF、杀毒软件,启用HTTPS、CSRF Token、密码加盐等机制;
- 管理层面:定期安全审计、漏洞扫描,加强员工安全培训(如识别钓鱼邮件);
- 应急层面:制定应急预案,定期数据备份,确保攻击发生后能快速恢复。
通过"预防-检测-响应"的闭环管理,可最大限度降低网络攻击的风险。