documentroot 安全需全局禁用隐藏文件(如 .env、.git)、显式封禁敏感目录(/config、/backup、/uploads)、加固根路径父级访问( require all denied)、严格管控属主权限(750/非root),并验证403响应生效。

DocumentRoot 是 Apache 对外提供服务的起点,也是攻击者最常试探的位置。禁止访问隐藏文件(如 .env、.git、.htaccess)和敏感目录(如 /config、/backup、/uploads),不是“锦上添花”,而是基础生存线。
全局禁用隐藏文件直接访问
所有以点号开头的文件(.xxx)默认不应被 Web 请求读取。在主配置或虚拟主机内统一拦截:
- 添加
块 - 内部写 Require all denied(Apache 2.4+)或 Order deny,allow && Deny from all(2.2)
- 该规则应放在
内或全局 外层,确保覆盖所有子路径
显式封禁常见敏感目录
仅靠隐藏文件拦截不够——攻击者可能直接猜路径。对已知高危目录做硬性拒绝:
通过PDFAPIHub云API将office文档(DOCX、DOC、PPT、PPTX、XLS、XLSX、CSV、TXT、ODT、RTF)转换为PDF,文档上传至pdfapihub.com完成转换。
- 对 /config、/private、/backup 等目录,单独加
- 内部设 Require all denied + Options None(禁用符号链接、脚本执行等一切扩展行为)
- 若需上传功能,/uploads 目录必须额外限制:Options -ExecCGI -Includes,并禁止解析 PHP:
Require all denied
DocumentRoot 根路径本身要设防
很多人忽略一点:DocumentRoot 的父级或同级目录若未约束,可能被绕过访问。务必检查并加固:
- 确认
块存在且配置为 Require all denied + AllowOverride None - DocumentRoot 路径(如 /var/www/example.com/public)不能是系统根目录、用户主目录或 Apache 安装目录的子目录
- 该目录属主应为专用非 root 用户(如 webuser),组为 www-data,权限严格控制为 750 或 755,其他用户无写权限
验证是否真正生效
改完不验证等于没改。关键测试动作:
- 浏览器访问 https://yoursite.com/.env → 应返回 403 Forbidden,而非下载或显示内容
- 访问 https://yoursite.com/.git/config 和 https://yoursite.com/backup/ → 同样必须 403
- 用 curl -I 检查响应头,确认没有 200 OK 或 302 Redirect 暴露路径
- 若启用 SELinux 或 AppArmor,还需确认策略未放行异常路径访问










