外包网站安全测试前,最该整理的不是一份“帮我测测有没有漏洞”的口头描述,而是测试对象、授权边界、测试深度、交付物和验收标准这五类信息。缺少其中任何一项,报价会失真,测试范围会缩水,最终报告也很难判断是否通过。比较务实的做法是先决定采用“按范围委托”还是“按目标委托”两种方式之一,再据此写需求。
按范围委托,是指你明确列出要测的域名、子域、IP、接口、后台和登录角色,服务方在清单内做测试。它适合资产边界清晰、预算有限、只想确认已知系统风险的情况。按目标委托,是指你给出想验证的安全目标,例如“确认支付流程能否被越权操作”“验证用户数据是否可被批量导出”,由服务方自行设计路径。它适合业务复杂、担心跨模块组合风险的情况,但报价通常更高,周期也更长。
判断条件很直接:如果你能在一张表里列清所有入口,选按范围;如果你连资产清单都还不完整,先做资产梳理,不要直接把“全公司所有系统”写进需求,那等于没有边界。
这六项里,授权和禁止事项最容易被忽略,却直接决定测试是否合法、是否会影响线上业务。把它们写进合同附件,比口头确认可靠。
拿到报价后,不要只比总价。按同一张表逐项对照:测试对象数量是否一致、是否包含手工测试、是否包含复测、报告是否给出可复现步骤、是否按统一分级标准标注严重程度。两份方案如果一份只做自动化扫描、另一份包含手工验证,价格差距是正常的,不能直接判定谁贵谁便宜。
可以要求对方给出一个假设示例:针对登录接口,说明会测试哪些方向、如何判断结果。假设某方案只写“使用工具扫描登录页”,而另一方案写明会检查弱口令策略、会话固定、越权访问和验证码绕过,后者的覆盖范围更明确。这里说的是需求描述能力,不代表实际测试质量,最终仍要看交付报告是否可复现。
验收时重点看三件事。第一,报告中的每个漏洞是否有复现步骤、影响说明和修复建议,只有结论没有过程的条目无法验证。第二,约定的测试对象是否都有覆盖记录,未测部分是否写明原因。第三,是否按约定完成复测,复测结果是否标注“已修复”“未修复”或“部分修复”。
如果报告只给出一份工具扫描结果、没有人工验证痕迹,而你的需求里明确要求手工渗透,这就属于未达交付标准,应当要求补充。反过来,如果测试期间发现了范围外的严重问题,是否扩展测试属于新增工作量,需要在需求阶段就约定处理方式,避免事后争议。
先把资产清单和账号角色整理成一张表,再从中划出本次必须覆盖的部分,用上面的六项内容写成一份需求文档。拿着这份文档去询价,你得到的报价才具备可比性,验收时也有明确依据。