网站发包方也应该了解的内容 —— 把 IPA《安全网站构建指南》当作检查清单来使用

· 更新日期: · · 网站制作, Web制作, 信息安全, 漏洞, SQL注入, 跨站脚本, IPA, WordPress, B2B

被问到「我们公司网站的安全性真的没问题吗?」时,能够有据可依地回答「没问题」的公司并不多。

很多人会觉得「交给制作公司负责就没问题」「我们只是个公司介绍网站,不会成为攻击目标」,但只要有一个咨询表单,就意味着有程序在处理输入内容;如果使用了 WordPress 之类的 CMS,管理后台和插件也都是攻击面。而且大多数攻击并不是针对特定公司发起的,而是通过机械化扫描寻找存在漏洞的网站。

那么,究竟应该以什么为基准来确认「没问题」呢?长期以来被作为该基准使用的官方资料,正是 IPA(独立行政法人信息处理推进机构)的《安全网站构建指南》

本文将用网站发包方、运营方也能理解的语言,梳理这份资料究竟告诉了我们什么。

1. 先说结论

  • 《安全网站构建指南》是基于实际向 IPA 举报过的漏洞、整理出网站 11 类弱点及其对策的资料。它不仅面向开发者,也可以作为发包与验收的基准来使用
  • 对策分为「根本性解决」(消除原因)与「辅助性对策」(减轻损害)两类。以根本性解决为基础,辅助性对策是在此之上的补充
  • 配套的《安全实施检查清单》可以直接作为向制作公司发包、验收时的确认项目来使用
  • 附册《网站健康诊断规格》可作为对运营中网站进行定期检查时诊断项目的基准
  • 在公司网站的实务中,表单等接受输入的部分,以及 CMS(如 WordPress)的运维,是两大主要风险来源。应在发包阶段就确定好不「做完即止」的持续运维体制

2. 什么是《安全网站构建指南》

《安全网站构建指南》是 IPA 从收到的漏洞相关举报信息中,挑选出举报数量较多、或一旦遭受攻击影响较大的漏洞,面向网站开发者与运营者整理对策的资料。最新版本是 2021 年 3 月发布的修订第 7 版,全书共 115 页。除 PDF 版本外,还针对各个漏洞发布了相应的 HTML 页面。

全书由三章构成。

章节 内容
第 1 章 Web 应用程序的安全实施 针对 11 类漏洞,解说其威胁与对策(根本性解决・辅助性对策)
第 2 章 提升网站安全性的举措 服务器运维等应用程序实现之外、用于提升网站整体安全性的举措
第 3 章 失败案例 解说实务中常见的 8 类失败案例,并附有源代码与修正示例

除正文外,还另外公开了以下资料。

  • 安全实施检查清单(Excel 格式):用于确认是否已实施正文对策的一览表
  • 附册《安全调用 SQL 的方法》:深入探讨数据库相关漏洞对策的资料
  • 附册《网站健康诊断规格》:整理了用于诊断运营中网站的 13 项诊断内容的规格

以上资料均可从 IPA 官网 免费下载。

3. 从「会发生什么」的角度解读 11 种漏洞

第 1 章列出的 11 类漏洞,是以面向开发者的术语呈现的,但如果换成「放任不管的话,自家网站会发生什么」这个角度来看,发包方也会意识到这绝非事不关己。

漏洞 放任不管会发生什么
SQL 注入 咨询记录、会员信息等数据库内容被窃取或篡改
OS 命令注入 服务器被劫持,沦为攻击跳板
路径参数未校验(目录穿越) 服务器上原本不打算公开的文件被读取
会话管理缺陷 他人可以冒充本人登录
跨站脚本(XSS) 在访问者的浏览器中运行伪造画面或恶意脚本,导致信息被窃取
CSRF(跨站请求伪造) 已登录用户在不知情的情况下被诱导执行非本意的操作
HTTP 头注入 被滥用于显示伪造页面或将用户引导至其他网站
邮件头注入 咨询表单被滥用为垃圾邮件的发送装置
点击劫持 不可见的按钮被叠加在页面上,诱导用户进行非本意的点击
缓冲区溢出 程序被劫持,可被用于执行任意处理
访问控制或授权控制缺失 无权限人员也能进入会员页面或管理功能

例如「邮件头注入」,公司介绍网站的咨询表单就直接与之对应。防护不到位的表单会被滥用为垃圾邮件的发信源,甚至损害公司域名本身的信誉(邮件能否正常送达对方)。正如《咨询表单邮件无法送达的原因》一文所述,表单邮件无法送达的问题会直接导致业务机会的损失。

4. 「根本性解决」与「辅助性对策」——对策的基本思路

这份资料的优秀之处在于,将对策分为两类来呈现。

  • 根本性解决:消除漏洞根本原因的实现方式。例如对于 SQL 注入,就是在拼装 SQL 语句时使用占位符,而不是字符串拼接
  • 辅助性对策:在漏洞仍然存在的情况下,用于降低攻击成功率或损害程度的对策。例如不将错误消息原样显示在浏览器上

这一分类,可以成为发包方在听取安全性说明时的一把标尺。「我们会引入 WAF(检测并拦截攻击的机制),所以可以放心」这类说明,谈的是辅助性对策,并不能替代应用程序本身的根本性解决。反过来,在实施根本性解决的基础上再叠加 WAF,则是合理的架构。只要能分辨对方谈论的是哪一层面的内容,就能大致看清提案是否妥当。

5. 如何在发包与验收中使用

《安全网站构建指南》虽是面向开发者的资料,但对发包方而言,其实用价值在于可以将其用作提出要求与进行确认的基准。

  • 报价・需求阶段:在规格书或 RFP 中加入一句「须实施 IPA《安全网站构建指南》所列漏洞的相应对策」。明确指出所依据的基准,比「充分考虑安全性」这类模糊表述更能让要求变得清晰
  • 验收阶段:要求对方就安全实施检查清单中的相应项目提交确认结果
  • 签约阶段:以书面形式明确上线后由谁负责更新 CMS、插件与服务器,以及一旦发现漏洞时的应对是否属于维保合同范围,还是需要另行报价

第三点尤其重要。网站的安全性并非在建成的那一刻就宣告完成,而是要靠持续跟进上线后新发现的漏洞来维持。这个「由谁来持续负责」的问题,与《受托开发与运维保守合同》一文中梳理的维保范围问题,属于同一种结构。

6. 对运营中的网站进行「健康诊断」

对于已经上线的网站,附册《网站健康诊断规格》会很有帮助。这是一份针对运营中网站进行安全性检查的诊断项目规格(共 13 项),也可以作为使用漏洞诊断服务时判断服务内容是否到位的参考标准。

在中小企业的公司网站中,实务上风险尤其容易集中在以下两处。

  • 接受输入的部分:咨询表单、搜索框、会员登录等。第 1 章中的大多数漏洞都与此相关
  • CMS 的运维:本体、主题、插件更新已经停滞的 WordPress 等网站,是被人利用已知弱点进行篡改的典型模式。更新究竟是谁的工作职责一直未定、被就此放置不管的情况非常多见

如果想连同运维体制一起重新审视 CMS 的更新负担,《从 WordPress 迁移》一文也可供参考。此外,还有一种设计思路是从一开始就减少动态处理、采用静态网站架构,从而缩小攻击面本身。本公司在网站制作中采用的以数字厅设计系统为基础的静态架构,正是这一思路的延伸。

另外,网站的安全运营,在 IPA《中小企业信息安全对策指南》第 4.0 版的自查项目中也有所提及。关于它在公司整体安全对策中的定位,请参阅《指南第 4.0 版解读》一文

总结

整理一下 IPA《安全网站构建指南》的要点。

  • 基于实际向 IPA 举报过的漏洞,整理出网站 11 类弱点及其对策的经典资料(修订第 7 版・全书 115 页)
  • 对策分为根本性解决与辅助性对策两个层次。WAF 等辅助性对策无法替代根本性解决
  • 发包方可以采用以下用法:在需求中明确写出资料名称,用检查清单进行验收,并通过合同确定上线后的更新体制
  • 对运营中的网站,可以《网站健康诊断规格》为基准进行定期检查
  • 公司网站现实中的风险,容易集中在表单等输入处理以及 CMS 放任不管这两方面

安全性问题往往容易变成「完全按专家说的花钱」或「什么都不做」这样的二选一,但只要了解了官方基准,就能够用自己的语言来提出要求、进行确认。

致正在考虑网站制作与改版的您

合同会社小村软件(合同会社小村ソフト)在承接网站制作与改版项目时,会遵循本文介绍的思路,从表单相关实现、不过度依赖 CMS 的静态架构,到上线后的更新体制,提供全方位的方案建议。即便您还处于「不清楚现有网站究竟是什么状态」这个阶段,也欢迎从现状确认开始咨询。

共享相同标签的最新文章。可以围绕相近的主题进一步加深理解。

与本文相近的主题页面。以本文为起点,可以进一步了解相关服务和其他文章。

本文与以下服务页面相关联,欢迎从最接近的入口查看。

网站制作

在网站的新建或改版项目中,表单相关实现、CMS 架构等本文所探讨的安全性考量,会直接影响到制作质量。

常见问题

汇总了咨询这一主题时常见的问题。

《安全网站构建指南》是一份怎样的资料?
这是 IPA(独立行政法人信息处理推进机构)公开发布的一份面向网站开发者与运营者的安全资料。它从 IPA 收到的漏洞相关举报信息中,挑选出举报数量较多或影响较大的漏洞,解说其威胁与对策。最新的修订第 7 版于 2021 年 3 月发布,全书共 115 页。除正文外,还免费公开了安全实施检查清单,以及附册《安全调用 SQL 的方法》《网站健康诊断规格》。
即使只是公司介绍程度的网站,也需要安全对策吗?
需要。只要有咨询表单,就意味着有程序在处理输入内容;如果使用了 WordPress 等 CMS,管理后台和插件也会成为攻击目标。攻击者未必会根据公司规模挑选目标,而是机械化地寻找存在漏洞的网站,将其滥用为篡改、传播病毒的跳板,或垃圾邮件的发送源。网站可怕的地方就在于,你在成为受害者的同时,也可能变成对交易伙伴和访问者施害的一方。
根本性解决与辅助性对策有什么区别?
《安全网站构建指南》将对策分为两类来呈现。根本性解决,是指消除漏洞根本原因本身的实现方法(例如:在拼装 SQL 语句时使用占位符)。辅助性对策,是指在漏洞仍然存在的情况下,用于降低攻击成功率或损害程度的对策(例如:不将错误消息原样显示出来)。仅靠辅助性对策会让根本原因依然存在,因此正确的顺序是以根本性解决为基础,再叠加辅助性对策。
向制作公司发包时,关于安全性应该确认哪些内容?
建议至少在报价阶段确认以下三点:①是否实施了《安全网站构建指南》所列漏洞的相应对策;②能否通过配套的安全实施检查清单等方式出示确认结果;③上线后由谁负责更新 CMS 与插件(是否属于运维保守合同的范围)。安全需求如果事后追加,会造成较大的返工,因此在签约前以书面形式加以确认非常重要。

作者简介

本文作者的个人简介页面。

Go Komura

小村软件有限公司 代表

以 Windows 软件开发、技术咨询与故障排查为中心,擅长难以复现的故障调查,以及既有资产仍在运行的项目。

返回博客列表