Skip to content
📌知识点小结
  • 文件名通常是“主文件名.扩展名”,扩展名(后缀)表示这个文件是什么类型、用什么程序打开。
  • .txt 是文本、.png/.jpg 是图片、.exe 是可执行程序、.py 是 Python 脚本、.pdf 是文档。
  • Windows 默认隐藏已知扩展名,这会带来安全风险(如 照片.jpg.exe 看起来像照片)。
  • 文件的“真实类型”由内容决定,扩展名只是提示;改扩展名不会转换内容。
  • 安全上要习惯显示扩展名,识别伪装成文档/图片的可执行文件。
自测一下

0.5 文件名、扩展名与文件类型

第〇篇「零基础预科」免费。这一篇讲文件名末尾那个"小尾巴"——扩展名,以及它和安全的关系。

一、扩展名是什么

一个完整文件名通常长这样:

报告      .docx
↑主文件名  ↑扩展名(后缀)

扩展名用来表示文件类型,并决定系统默认用哪个程序打开它。

常见扩展名:

扩展名类型用什么打开
.txt纯文本记事本
.mdMarkdown 文档编辑器
.pdfPDF 文档PDF 阅读器
.png .jpg图片看图/浏览器
.mp4视频播放器
.exeWindows 可执行程序双击即运行
.pyPython 脚本Python 解释器
.yml .json配置/数据文件编辑器/程序
.shLinux 脚本shell 解释器

二、重要安全习惯:显示扩展名

Windows 默认会隐藏"已知类型"的扩展名。这在安全上是个坏习惯,因为它给了伪装空间。

设想一个攻击者发来的文件,真实名字是:

工资表.jpg.exe
  • 如果扩展名被隐藏,你只看到 工资表.jpg,以为是图片,双击 → 实际运行的是 .exe 程序,中招;
  • 如果扩展名显示完整,你会清楚看到结尾是 .exe

建议立刻打开"显示文件扩展名":Windows 文件资源管理器 → "查看"选项卡 → 勾选"文件扩展名"。

三、扩展名 ≠ 真实类型

要建立一个严谨认知:扩展名只是"名字上的提示",文件的真实类型由它的内容决定。

  • a.txt 改名成 a.png,里面还是文字,并不会真的变成图片;
  • 系统判断真实类型,靠文件开头的几个特殊字节,叫文件头 / 魔数(magic number)
    • PNG 文件以 89 50 4E 47 开头;
    • PDF 以 %PDF 开头;
    • Java 序列化数据以 AC ED 00 05 开头(后面反序列化篇会用到)。

Linux 有个命令 file 文件名,就是读内容来告诉你真实类型。

四、安全中的扩展名问题

  • 文件上传绕过:很多网站只检查扩展名是否为图片,攻击者把脚本改名、或同时伪造文件头来绕过,是 Web 常见考点;
  • 木马伪装:钓鱼邮件常用 Word/Excel 图标 + 可执行内容(或带宏的文档);
  • 靶场文件:你会看到 .ser(Java 序列化数据)、.class(编译后的 Java)、.key(密钥)等,认识扩展名能快速判断"这是什么、该用什么处理"。

五、本篇小结

  • 扩展名表示文件类型、关联打开方式;常见类型要眼熟(txt/pdf/png/exe/py/yml/sh)。
  • 建议开启显示扩展名,防止 jpg.exe 这类伪装。
  • 扩展名不等于真实类型,真实类型由文件头/魔数决定,改名不转换内容。
  • 文件上传校验、木马伪装、靶场文件识别都与此相关。

下一篇 0.6 讲"路径"——怎么用一行文字精确告诉电脑某个文件在哪。