接手客户的网站:报价之前该检查什么
给从其他开发者手中接手网站的代理公司和自由职业者的清单:从外部和在后台分别检查什么,以及如何把发现整理成客户看得懂的报价。
一位新客户和之前的开发者不再合作,想找人接手网站。他问每月维护要多少钱。很容易直接按你的标准价回复。问题是,你还不知道自己要接下的是什么。
一个几经易手的网站,可能带着几十个插件,其中一些很久没动过,公开文件夹里躺着数据库转储文件,还有一个没人记得是谁的管理员账号。按维护良好的网站报价,你最初几周的维护就是白干。如果网站已经被入侵,从你接手的那天起,它看起来就是你的问题。
下面的清单分两部分:在客户交出任何密码之前,你可以从外部检查什么;拿到密码之后,在后台看什么。最后讲怎样把发现整理成报价。
先取得客户的许可
像普通访客那样看一个网站,不需要任何人许可。对它运行扫描工具则不同:主机商或之前的开发者可能对意料之外的流量反应激烈。客户一句话的邮件,“我同意你在报价前检查网站”,就能保护你。
从外部检查,不需要密码
这些都可以在第一次会面之前完成。大约半小时,往往足以判断这会不会是一份标准报价。
证书与跳转。 网站是否只通过 HTTPS 运行?http://、带 www 和不带 www 的版本,是否都落到同一个安全地址?证书什么时候到期,服务器是否仍接受已淘汰的 TLS 1.0 和 1.1?SSL 证书检查(英文)几秒钟就能回答这些问题。
域名上的邮件。 MX、SPF、DKIM 和 DMARC 记录。没有 DMARC,或者 DMARC 为 p=none,既是你报价单上的一项,也说明有一阵子没人看过 DNS。同时记下客户的邮箱托管在哪里,因为你之后做的每一次 DNS 修改都必须兼顾它。SPF、DKIM 和 DMARC 检查(英文)会显示当前状态。
平台与版本。 网站运行在什么上,哪个版本,页面代码里能看到哪些插件,它们是否泄露了版本号。generator 元标签和脚本网址上的 ?ver= 参数能透露很多信息。把发现的内容与 WPScan 或 Patchstack 这类漏洞数据库对照。
不该公开的文件。 backup.zip、.sql 转储、wp-config.php.bak、.git 文件夹、.env 文件、phpinfo.php。不要手动猜地址,工具检查得更快更全面。如果发现了什么,不要下载。记下地址,马上告诉客户。遗忘在服务器上的备份文件解释了为什么这一项不能拖。
表单。 每个表单是否通过 HTTPS 提交,有没有垃圾信息防护,旁边有没有隐私说明?发一条测试咨询,问客户有没有收到,收在哪个邮箱。联系表单把线索发给已离职员工的地址好几个月,这种事是有的。
标头与子域名。 补上缺少的安全标头通常是小活,但应该写进报价。被遗忘的子域名,如 test. 或 old.,可能比主站更危险,因为没人更新它们。
被入侵的迹象。 在谷歌搜索 site:clientdomain.com,往下翻结果。出现日文页面,或关于药店、赌场的页面,说明你要从清理开始,而不是从维护开始。
在后台,拿到权限之后
备份。 存在哪里、多久一次、保留多久、谁能访问。问问有没有人用它恢复过网站。在改动任何东西之前,先自己做一份完整备份,存放在服务器之外。如果发现某些东西在你到来之前就已经坏了,这是你的保险。
管理员账号。 逐个检查所有“管理员”角色的用户。属于上一家代理公司、前员工或没人认识的账号,在客户同意后应该删除。把一个没人能解释的账号当作可能的入侵迹象,而不是杂物。
插件与主题。 数一数插件的数量,记下哪些在等待更新,哪些已停用,哪些很久没有新版本。检查付费插件的授权:登记在谁名下,是否已过期。没有授权的高级插件得不到更新,“来自非官方渠道”的副本可能带有额外代码。看看主题是不是被直接修改,而没有通过子主题,因为下一次更新会抹掉这些修改。过期的 WordPress 插件介绍了先更新什么、删除什么。
PHP 版本与运行环境。 工具下的“站点健康”页面显示 PHP 和数据库版本以及 WordPress 自己的警告。旧的 PHP 版本常常阻碍其他所有更新,因此它决定了工作的顺序。
主机、域名和 DNS。 这一项很容易留到以后,然后卡住一切。弄清楚域名注册在谁名下,谁能登录注册商,主机账号是谁的、谁在付费,以及谁能修改 DNS。理想情况是所有东西都属于客户,你拿到自己的登录账号,而不是之前开发者的。如果域名注册在原来的代理公司名下,在规划任何迁移之前先启动域名转移。
从内部看表单。 提交内容发到哪里,是否存进数据库,保存多久。多年积累的、充满个人数据的旧咨询,对客户来说是 GDPR 问题,所以即使决定不归你,也要写进你的报告。
把发现整理成报价
客户分辨不出维护良好的网站和被忽视的网站。在浏览器里它们看起来一样。如果你的报价单上“网站接手”只有一个数字,而竞争对手的数字更低,客户会选更低的。你需要展示差别来自哪里。
把报价分成三部分:
- 现状。 一份简短的清单,列出你发现的内容,注明检查日期。每项三句话:哪里不对,可能给业务带来什么损失,需要做什么。不用行话。不要写“没有 DMARC”,要写“任何人都可以发出看起来来自贵公司的邮件,包括假发票”。
- 初期清理。 由现状产生的一次性工作,每项有各自的价格或工时估算。客户清楚地看到自己为什么付钱,预算紧张时可以自己排优先级。把紧急的项目,比如公开可见的数据库转储,标为接手的前提条件。
- 月度维护。 一笔固定费用,用来把网站保持在你交付时的状态。
再加一句关于责任的话:你的维护从交接日期起覆盖网站,现状中列出的问题,只有在修复之后才算你的责任。具体措辞请律师按你所在市场来写,但这个原则对双方都有保护作用。客户知道自己在为什么付费,你也不用为别人的疏忽负责。
保留检查当天的证据:报告、截图、账号和插件清单。如果三个月后冒出一个在你接手之前就存在的感染,你可以拿出证明。
客户自己就能看懂的报告
如果客户可以把清单转给合作伙伴或会计,而不用打电话找你翻译,报价单里的清单效果会更好。所以,用你自己品牌出具的检查报告,值得附在报价单后面。
ShieldWave 负责这份清单中外部检查的那一半。它不需要插件或密码就能检查网站,在 Enterprise 套餐中,报告带有你所在代理公司的标志和信息。客户拿到的是不带行话的问题说明和按紧急程度排序的修复计划;你拿到的是带地址、证据和预计工时的发现项,用来做报价。Enterprise 每月 29 美元,网站数量不限,有 7 天试用。它不会替你查看后台面板、备份或访问权限清单,所以这份清单的后半部分仍然是你的工作。