站点运营里,大家更常盯着 URL、Sitemap 和内容更新,但服务器上的目录权限和上传目录配置,往往在出事之后才被想起来。一个上传目录如果既能写又能执行脚本,被塞进一个文件就可能变成挂马页面;蜘蛛顺着站内链接抓过去,轻则抓走一堆垃圾 URL,重则让站点在搜索结果里出现异常摘要。权限问题不一定会立刻让站点打不开,却会悄悄影响抓取质量和站点信誉。
为什么上传目录要单独对待
正常页面目录通常只需要读取权限,上传目录却必须允许写入。写和执行如果放在同一个目录,风险就叠在一起了。攻击者不需要拿到服务器账号,只要找到一个能上传文件的功能,就可能把脚本传进来并直接访问。对蜘蛛来说,这些被上传的页面一旦能被访问,就可能被当成站内正常内容抓取和索引。
权限自查的目标不是把目录锁死到无法运营,而是让“能写的地方不能执行,能执行的地方不能随便写”。
常见权限配置误区
- 上传目录权限给到 777:为了图省事把所有权限打开,任何进程都能写入和执行,出问题时很难追溯。
- 目录可写但未禁止脚本执行:上传目录里放了图片和附件,同时也允许 .php、.jsp 等脚本直接运行。
- 缓存和日志目录与站点目录混在一起:缓存文件被直接访问,日志目录写满分区后拖慢整站响应。
- 备份文件放在 Web 根目录下:压缩包、数据库导出文件能被直接下载,蜘蛛也可能抓到这些地址。
- 权限设置后没有复查:程序升级、迁移或恢复备份后,权限被重置回默认值,却没人发现。
一份可执行的自查清单
- 列出所有允许上传的目录,确认它们与程序代码目录分开存放,尽量放在 Web 根目录之外,或者通过独立域名提供访问。
- 检查上传目录权限,目录一般设为 755 或更严格,文件设为 644,不要长期使用 777。
- 在上传目录的服务器配置中关闭脚本解析。以 Nginx 为例,可以对该目录匹配到脚本后缀时返回 403 或 404;Apache 则可通过配置禁止执行。
- 检查缓存目录、日志目录和临时目录的所属用户,避免 Web 进程对代码目录有写权限。
- 确认 Web 根目录下没有 .sql、.zip、.tar.gz、.env、.git 等不该公开的文件。
- 查看最近上传目录里是否出现陌生脚本文件,尤其是文件名随机、内容很短、带加密代码的文件。
- 把权限检查加入例行巡检,至少在程序升级、服务器迁移和恢复备份后各做一次。
发现问题后的处理顺序
如果已经发现可疑文件,先不要只删文件就结束。更稳妥的顺序是:先隔离站点或关闭上传入口,再备份现场日志和文件列表,接着排查入口来源——是上传功能校验不足,还是弱口令被登录,或是依赖组件存在已知问题。清理干净后再收紧权限,最后观察一段时间访问日志和抓取日志,确认没有新的异常请求。
处理过程中还要留意搜索引擎侧的反应。如果挂马页面已经被抓取,及时清理并提交死链或使用移除工具,同时检查 robots.txt 是否误封了正常目录。权限问题处理完后,别急着马上改 canonical 或重定向,先让站点稳定运行几天,再看抓取和索引数据的变化。
把权限检查变成日常动作
目录权限不是设置一次就永远安全的配置。程序会更新,插件会新增,运维人员会变更,任何一次操作都可能让权限回到方便但不安全的状态。把上传目录、缓存目录、日志目录和备份文件路径写进站点运营清单,定期看一眼,比出事后再翻日志省力得多。对蜘蛛来说,一个干净、可预测的站点结构,永远比一个充满意外入口的站点更容易抓取和理解。