站点运营

站点运营:残留文件與目錄列表自查,清理不该被蜘蛛看到的路径

蜘蛛抓取的路径往往不止栏目頁和文章頁,临时文件、备份包、版本控制目錄、日誌文件也可能被留在可訪問路径下。本文整理常见的残留文件類型、目錄列表(autoindex)的检查方式、後台與上传目錄的處理思路,以及一套可持續的巡查习惯,帮助减少本不该公開的地址。

站点运营

站点运营:残留文件與目錄列表自查,清理不该被蜘蛛看到的路径

蜘蛛抓取的范围通常比我們预想的要宽。除了栏目頁、文章頁和站点地图里列出的地址,服務器上一些本不该出現在公開目錄中的文件,也可能因為一次誤传、一次打包、一次临时調试而留在可訪問路径下。平时没有用戶會去訪問它們,但訪問日誌里偶尔會留下抓取的痕迹。這類問题不影响正常訪問,所以很容易被長期忽略。

先弄清哪些文件容易留下来

下面這些類型在中小站点里出現频率較高,可以對照自己的服務器目錄過一遍:

  • 临时與备份文件:index.php~、index.php.bak、xxx.php.old、.index.php.swp 等編輯器或同步工具生成的副本。
  • 整站或資料库备份包:www.zip、backup.tar.gz、db.sql、導出文件等,一旦放在 Web 目錄下,等于把整份資料公開。
  • 版本控制目錄:.git/、.svn/、.hg/,部分目錄還能被直接列出文件清單。
  • 环境與配置:.env、config.php.bak、含连接信息的配置文件副本。
  • 日誌與缓存:access.log、error.log、程序生成的 runtime 或 cache 目錄。
  • 程序自带說明:readme.html、changelog.txt、install/ 安装目錄、test.php 之類的探测脚本。

判断标准很简單:這個路径如果被一個陌生人打開,是否會暴露額外信息或带来風險。會,就不應该留在公開目錄里。

目錄列表(autoindex)是另一個常见入口

当服務器開啟了目錄索引功能,訪問一個没有預設首頁的目錄时,會直接返回该目錄下的文件名列表。對蜘蛛来说,這相当于一份自動生成的連結清單,可能顺藤摸瓜發現更多本不该出現的地址。

检查方式很直接:在浏览器里依次訪問 /uploads//images//static//data/ 這類常见目錄,观察是否返回文件列表頁。如果返回了,說明该目錄没有預設文档且索引功能是打開的。處理办法是關閉 autoindex,並在必要的目錄下放置一個空的 index 文件,或由程序自己控制首頁輸出。

後台、接口與上传目錄

後台登入頁、内部接口路径、上传目錄通常不希望被索引。這里需要提醒一句:在 robots.txt 里寫 Disallow 只是請求抓取方不要訪問,並不能阻止地址被別人打開。真正的保護来自訪問控制,例如 IP 白名單、帳號鉴權、限速與驗證碼、把後台路径與主站分离。

上传目錄則要額外注意执行權限,避免有人上传脚本後直接執行。把上传目錄與程序目錄分開存放,通常比事後排查省事得多。

一套可以照做的自查步骤

  1. 拉取近期訪問日誌,筛出那些你從没印象發布過的路径,逐個確認来源。
  2. 用搜尋引擎的 site: 查询配合 filetype:、inurl: 等條件,看看是否出現了不该公開的文件類型。注意不要频繁查询。
  3. 對常见敏感路径發一次 HEAD 請求,看返回的狀態碼是 200 還是 403/404,重点關注 200。
  4. 维護一份"允许公開"的目錄清單,與服務器實际目錄结构做比對,多出来的部分逐個判断。
  5. 检查服務器配置中的目錄索引開關、目錄權限和預設文档設定。

處理原則與長期习惯

  • 無用的文件直接刪除;暂时還要保留的,移出 Web 根目錄。
  • 上传、备份、日誌尽量走獨立存储,不要图方便放在站点目錄下。
  • 部署流程里加一步清理临时文件,避免每次發版都留下新副本。
  • 把目錄检查排進日常巡查,新上线的功能往往會带進新的残留路径。
這類問题的特点是:不影响用戶正常訪問,也不影响頁面顯示,所以往往要等到有人翻到才被發現。它更像是一種日常卫生习惯,靠一次集中清理解决不了,靠固定节奏的巡查才比較稳。

如果你的站点结构比較简單,可以從备份包和版本控制目錄這两類開始查,通常几分钟就能看出结果。之後再逐步把目錄列表、上传目錄和日誌文件的检查固定下来,形成一份可以重复执行的清單即可。