常见的网络攻击

**网络攻击(Cyber Attacks,也称赛博攻击)**‌是指利用程序漏洞、系统缺陷或暴力手段,削弱、破坏或非法访问目标网络系统,造成系统损失或数据泄露的攻击行为,是网络空间安全领域的核心威胁。常见的攻击方式有:

一、XSS(注入恶意脚本 → 偷数据)

1. XSS 跨站脚本攻击

XSS:攻击者注入恶意脚本,浏览器执行 → 偷 cookie、篡改页面

原理 :攻击者注入恶意 JS/HTML 代码到网页,其他用户访问页面时,脚本自动执行。

分三类:

  • 存储型 XSS:恶意代码存入服务器(评论、帖子),所有访问用户都会中招,危害最大。
  • 反射型 XSS:恶意链接携带脚本,诱导用户点击才触发,一次性攻击。
  • DOM型 XSS:前端代码直接解析 URL 参数生成页面,不经过后端,纯前端漏洞。

危害:盗取 Cookie、账号密码、劫持会话、钓鱼、弹窗广告。

防御

  • 前端 / 后端转义特殊字符(< > & " ');
  • 输入过滤、输出编码;
  • 设置 HttpOnly 禁止 JS 读取 Cookie;
  • 开启 CSP 内容安全策略。

Spring防 XSS核心思想是一切用户输入皆不可信,必须转义或过滤。具体方法会有:

  • 使用 Filter 包装 Request,统一转义请求参数
  • 自定义 JSON 反序列化器,转义 @RequestBody 数据
  • Cookie 设置 HttpOnly,防止 JS 读取会话
  • 配置 CSP 响应头,禁止非法脚本执行

2.CSP(XSS 的最后一道防线,浏览器白名单 → 防 XSS 执行)

CSP( Content Security Policy,内容安全策略**)** = 浏览器强制 "资源白名单" 。只允许页面加载你明确信任的域名 / 资源,不信任的脚本、样式、图片、iframe 直接禁止执行 / 加载,从根源堵 XSS。

CSP:即使注入成功,浏览器不执行陌生脚本 → XSS 失效

  1. 工作原理

服务器返回页面时,带一个 Content-Security-Policy 响应头,告诉浏览器:

  • 只允许: - 脚本:本站 + 可信CDN、- 样式:本站 + 可信CDN、 - 图片:所有域名 -
  • 禁止:内联脚本、eval、陌生iframe

2)常见指令(http)

核心指令

  • default-src 'self'; # 默认只允许本站资源
  • script-src 'self' https://cdn.com; # 脚本白名单:本站+指定CDN
  • style-src 'self'; # 样式白名单
  • img-src 'self' data:; # 图片:本站+base64
  • frame-src 'none'; # 禁止iframe
  • object-src 'none'; # 禁止插件(flash等)

3)两种开启方式

  • HTTP 响应头(推荐,最安全)

http:Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.com;

  • HTML meta 标签(备用)
html 复制代码
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.com;">

注:meta 方式不支持 frame-ancestorsreport-uri 等少数指令

二、CSRF(冒用身份发请求 → 改数据)

1. CSRF跨站请求伪造

原理:利用浏览器自动携带 Cookie 的特性,诱导已登录用户访问恶意页面,冒用身份发起请求(转账、改密码、下单)。

特点:攻击者拿不到你的 Cookie,只是借用你的身份。

危害:恶意操作账号数据、篡改信息、资金损失。

防御

  • 使用 CSRF Token(主流方案);
  • 验证请求 Referer/Origin 来源;
  • 敏感操作增加二次验证码、短信验证。

2. CSRF Token(请求验证码 → 防 CSRF)

CSRF Token 是服务器生成、与用户会话绑定的随机串,用来验证 "状态变更请求" 是否来自合法页面,防止恶意网站冒用已登录的身份发起请求。

注:CSRF Token和JWT一个防攻击,一个做登录,项目中通常配合使用

  • CSRF Token 用于防御 CSRF 攻击,验证请求是否来自合法页面,不负责身份认证;
  • JWT(JSON Web Token)用于用户登录认证 ,标识用户身份,实现无状态鉴权

CSRF Token原理

  1. 生成(服务器)

用户访问敏感页面(表单 / 接口)时,服务器生成随机、唯一、不可预测 的字符串,绑定当前 Session,存在服务器 Session 里。

2)下发(服务器→前端)

  • 表单:嵌入隐藏字段
html 复制代码
<input type="hidden" name="csrf_token" value="随机串" />
  • AJAX:放<meta>或接口返回,前端存内存(别存 localStorage,防 XSS 偷)。
  1. 携带(前端→服务器)

4)验证(服务器)

服务器从请求中取出 Token,和当前用户 Session 里的 Token 对比

为什么有效?

  • 表单:提交时自动带csrf_token字段。
  • AJAX:放在自定义 Header (如X-CSRF-Token)或请求体。
  • 一致:合法,执行业务。
  • 不一致 / 缺失:403 拒绝。
  • 同源策略:恶意网站(跨域)读不到你页面里的 CSRF Token。
  • 会话绑定:每个用户 / 会话 Token 不同,攻击者无法伪造。

3.常见实现

1)Spring Boot

java 复制代码
// 开启CSRF(默认开启)
@Configuration
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.csrf(csrf -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()));
        return http.build();
    }
}

2)前端 AJAX(Axios)

javascript 复制代码
// 从meta取Token
const token = document.querySelector('meta[name="csrf-token"]').content;
axios.interceptors.request.use(config => {
  config.headers['X-CSRF-Token'] = token;
  return config;
});

3)表单(Thymeleaf)

html 复制代码
<form method="post">
    <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
    <button type="submit">提交</button>
</form>

三、SQL 注入(拼接恶意 SQL → 拖库 / 删库)

原理:用户输入拼接进 SQL 语句,攻击者构造特殊字符篡改 SQL 逻辑,绕过校验、查询 / 篡改数据库数据。 示例:admin' or '1'='1 绕过登录。

危害:拖库、删表、窃取全量数据、提权控制服务器。

防御:

  • 强制使用预编译语句(PreparedStatement),杜绝字符串拼接;
  • ORM 框架(MyBatis/JPA)规范使用;
  • MyBatis 中使用 #{} 而不是 ${}
    • #{} 是预编译处理,会把参数替换为占位符?,自动加引号,能有效防止 SQL 注入;
    • ${} 是字符串直接拼接,不会预编译,不防注入,存在安全风险。
    • 优先使用 #{},只有动态表名、动态列名、排序字段等无法使用预编译的场景才用 ${}。
  • 输入过滤、权限最小化、关闭数据库错误详情输出。

四、DDoS/DoS 拒绝服务攻击

原理:

  • DoS:单台主机持续发送海量请求,耗尽服务器带宽、CPU、连接数。
  • DDoS:分布式拒绝服务,控制大量肉鸡 / 傀儡机集群攻击,威力更强。

危害:服务器卡顿、接口超时、网站 / 服务瘫痪,正常用户无法访问。

防御:

  • 流量清洗、CDN 分流;
  • 限流、黑名单、单 IP 连接数限制;
  • 高防 IP、弹性扩容、云厂商防护服务。

五、中间人攻击(MITM)

原理:攻击者拦截、篡改客户端与服务端之间的通信数据,相当于 "夹在中间窃听 / 改数据",常见于公共 WiFi。

危害:窃取账号、密码、聊天内容、篡改传输数据。

防御:全站启用 HTTPS(SSL/TLS 加密),校验证书,禁止 HTTP 明文传输。

六、文件上传漏洞

原理:前端 / 后端校验不严,允许上传 可执行脚本文件(.php/.jsp/.asp),访问文件时执行恶意代码。

危害:上传木马、获取服务器权限、控制整台服务器。

防御:

  • 严格校验文件后缀、MIME 类型、文件头
  • 重命名文件,存放目录禁止脚本执行权限;
  • 上传目录独立部署,限制访问。

七、目录遍历攻击

原理:利用路径符 ../ 越权访问服务器本地文件,例如 ../etc/passwd../web.xml

危害:读取配置文件、密钥、源码、系统敏感文件。

防御:

  • 过滤 ../\ 等路径字符;
  • 限制文件访问根目录,路径做标准化处理。

八、点击劫持

原理:恶意页面通过透明 iframe 嵌套目标网站,诱导用户点击看似正常的按钮,实际点击了被嵌套的敏感操作按钮。

危害:诱导用户下单、转账、授权、关注等恶意操作。

防御:配置 X-Frame-Options 响应头,禁止被 iframe 嵌套。

九、弱口令 & 暴力破解

原理:使用字典、穷举方式不断尝试账号密码,破解登录入口、后台、接口。

危害:账号被盗、后台被入侵。

防御:

  • 密码复杂度要求(大小写 + 数字 + 符号);
  • 登录频率限制、图形验证码、人机校验
  • 异地登录提醒、IP 黑名单。
相关推荐
WangX-西石油5 小时前
DVWA靶场Low级别Brute Force学习
学习·web安全·网络安全
小熊officer5 小时前
网络渗透(Network Penetration)
网络·安全·web安全
Dreamboat¿6 小时前
Web 框架识别全攻略(含 Spring Boot、Django、Laravel 等)
web安全
小熊officer7 小时前
网络渗透和网络安全
网络·安全·web安全
上海云盾第一敬业销售10 小时前
服务器遭受攻击的应对策略及快速防护实践
运维·服务器·web安全·ddos
其实防守也摸鱼1 天前
告别单个变量,用列表和字典批量管理你的 Python 数据
开发语言·网络·软件测试·python·web安全·数据结构,编程教程
路baby1 天前
2026第十届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
安全·web安全·网络安全·密码学·ctf·misc·御网杯
鹿鸣天涯1 天前
网规第三版:第9章网络安全部署案例
网络·安全·web安全·软考·网络规划设计师
深邃-1 天前
【Web安全】-10-网站关键信息收集:目录扫描的概念,工具目录扫描(内含御剑,FindSomething安装链接),网站服务器收集,操作系统判断
运维·服务器·安全·web安全·http·网络安全