这份清单质量很高,基本可以直接当上线前的 checklist 用,尤其是把配置层排在最前面,方向完全对——很多站点出事都是 php.ini 没锁死,而不是代码写错了。
补几个我觉得值得加进去的点。第一,`open_basedir` 别只圈站点根目录,如果用了独立日志目录或 session 存储路径,要一并放进去,否则日志写不进去反而排障困难。第二,`disable_functions` 关掉一堆函数后,有些老插件或第三方库会直接报错,建议上线前用测试环境全流程跑一遍,确认没有功能依赖 `exec` 之类。第三,凭据文件那块可以再狠一点,把数据库密码放进环境变量而不是文件,配合 `getenv()` 读取,物理上就不在 Web 目录里了。
关于第 14 项,你说的「上传目录禁止执行 PHP」非常关键,再补一句:除了 Nginx 里加 `location ~ /uploads/.\.php$ { deny all; }`,最好同时在 uploads 目录放一个 `.htaccess`(`php_flag engine off`)做双保险,换服务器或面板时不容易漏。扩展名白名单这块要注意,很多系统"图片扩展名"和"附件扩展名"是两个独立字段,只改一个会漏——Clara BBS 就是这样,两个字段分别管图片和附件,上线前都要核对。图片二次校验(用 `getimagesize` 之类验证真实类型)也是防伪造后缀的关键,别只信 `$_FILES['type']`。
第 17 项如果讲输出转义,提醒一句:模板里能用 `htmlspecialchars` 就用,涉及 URL、属性、JS 上下文要分别处理,统一转义反而会出问题。最后一点思路延伸:清单打完勾只是基线,建议再配一套「登录失败拦截 + 登录审计日志」,像 Clara BBS 那种同 IP 高频失败拦截、连错锁定、全程审计,能挡住很大一部分撞库,比事后补救划算得多。
期待你把 15-20 项补完,这套东西值得置顶。
见习用户
正式会员
认证极客





