通用安全编码规范
天翼电子商务有限公司天翼电子商务有限公司 信息技术部信息技术部 【】通用安全编码规范 保密申明保密申明 本文档版权由天翼电子商务有限公司信息技术部所有。 未经天翼电子商务有限公司信 息技术部书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的部分或全部, 并以任何形式传播 目 录 1 1 目的目的 为保障天翼电子商务有限公司(以下简称“翼支付”)支付平台的安全 性,构建安全健壮的程序,结合翼支付Web 安全遇到的问题以及启明星辰安 全研究实验室在 Web 攻防及代码安全的理论和实践积累,特制定本规范,旨 在为翼支付开发团队提供设计及编写应用程序时普遍应该遵循的原则。 为充分理解本规范内容,请: ➢ 了解应用程序将会受到的威胁; ➢ 理解必须考虑的威胁; ➢ 在程序设计阶段考虑到这些威胁。 2 2 范围范围 本规范从应用安全开发的角度出发, 结合翼支付平台系统的特点和常见 的安全问题,给出支付平台应用系统安全开发的规范。供翼支付平台应用系 统开发部门内部使用,适用翼支付平台应用系统项目开发的工作。 本规范定义了翼支付平台应用系统安全开发和编码安全相关的技术要 求。 本规范主要提供设计应用程序时应该遵循的一些指南和原则。 在应用程序易受攻击的重要环节应采用系统的方法。 将重点放在程序部 署、输入验证、身份验证和授权、加密及数据敏感度、配置、会话、异常管 理以及适当的审核和记录策略上,以确保应用程序的安全可靠性。 3 3 规范概述规范概述 当今电子商务时代,应用系统为架构设计人员、开发人员提出一系列复 杂的安全问题。为应对这些安全问题,须要应用安全思想来构建应用程序。 在初始阶段,应该使用可靠的安全体系结构和设计方法,同时要结合考 虑应用程序的部署以及企业的安全策略。如果不能做到这一点,将导致在现 有基础结构上部署应用程序时,导致危及应用系统的安全性。 本规范提供初步的安全体系结构和设计指南, 并按照翼支付平台常见的 应用程序漏洞类别进行组织。这些指南是应用系统程序安全的重要方面,并 且是经常发生错误的领域。 4 4 安全编码的原则安全编码的原则 ➢ 程序只实现你指定的功能 ➢ 永远不要信任用户的输入,对用户输入数据做有效性检查 ➢ 必须考虑意外情况并进行处理 ➢ 不要试图在发现错误之后继续执行 ➢ 尽可能使用安全函数进行编程 ➢ 小心、认真、细致地编程 5 5 WebWeb 应用程序常见安全问题应用程序常见安全问题 下面的安全问题是根据应用程序漏洞类别描述的。实际经验表明,如果 这些领域的设计存在薄弱环节, 将会导致安全漏洞。 下表列出了漏洞的类别, 每个类别都突出显示了由于设计不当可能会导致的潜在问题。 漏洞类别漏洞类别由于设计不当而引起的潜在问题由于设计不当而引起的潜在问题 输入验证嵌入到查询字符串、表单字段、cookie 和 HTTP 头中的恶意字符串 的攻击。这些攻击包括命令执行、跨站点脚本(XSS) 、SQL 输入 和缓冲区溢出攻击。 身份验证标识欺骗、密码破解、特权提升和未经授权的访问。 授权访问保密数据或受限数据、篡改数据以及执行未经授权的操作。 配置管理对管理界面进行未经授权的访问、 具有更新配置数据的能力以及对 用户账户和账户配置文件进行未经授权的访问。 敏感数据泄漏保密信息以及篡改数据。 会话管理捕捉会话标识符,从而导致会话劫持及标识欺骗。 加密访问保密数据或者账户凭据,或者二者均能访问。 参数操作路径遍历攻击、 命令执行以及绕过访问控制机制, 从而导致信息泄 漏、特权提升和拒绝服务。 异常管理拒绝服务和敏感的系统级详细信息的泄漏。 审核和记录不能发现入侵迹象、 不能验证用户操作, 以及在诊断问题时出现困 难。 5.15.1 跨站脚本攻击跨站脚本攻击 5.1.15.1.1定定义义 什么是跨站脚本攻击:什么是跨站脚本攻击: 跨站脚本攻击(通常简写为 XSS)是最普通的 web 应用安全漏洞,当应 用程序在发送给浏览器的页面中包含用户提供的数据, 没有经过严格验证或 转义,那么攻击者就有可能利用网站程序对用户输入过滤不严,输入可以显 示在页面上对其他用户造成影响的 HTML 代码,从而盗取用户资料、利用用 户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。 5.1.25.1.2危危害害 ➢ ➢ ➢ ➢ ➢ ➢ ➢ 敏感数据被获取(cookie 盗取) 网络钓鱼 获取 web 用户的网页内容 Session Riding(CSRF 攻击) 获取用户的键盘击键数据 Web 僵尸 XSS 蠕虫 攻击者能在受害者浏览器中执行脚本以劫持用户会话、迫害网站、插入 入侵者便通过技术手段在某个页面里插入一个恶意HTML 代码,例如记 录论坛保存的用户信息(Cookie),由于 Cookie 保存了完整的用户名和密 码资料,用户就会遭受安全损失。如这句简单的javascript 脚本就能轻易 获取用户信息:alert(document.cookie),它会弹出一个包含用户信息的消 息框。入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍作 分析便获取了用户的敏感信息。 跨站脚本攻击的危险,在如今WEB 安全越来越得到重视,他的危险性也 越来越大。 有效防止跨站脚本攻击,是 WEB 程序是否安全的一个重要标准。 5.1.35.1.3解解决方法决方法 主要防御方式主要防御方式 恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。 5.1.3.15.1.3.1 验证输入验证输入 验证输入很简单,检查每个输入的有效性。这可能意味着很多东西,但 在典型的和简单的情况下,这意味着检查输入类型和数据的长度。例如,如 果你是从一个文本框接受一个标准的邮政编码,你会知道,唯一有效的类型 是一个数字(0-9) ,而长度应该是 6,不能多也不能少。并非所有的案例都 如此简答,但很多是相似的。 下图显示验证输入的架构。这里的关键是,一切都进行验证,所有的输 入,这并不来自于应用程序(包括用户输入,请求头, Cookie,数据库数 据……) 。 5.1.3.25.1.3.2 编码输出编码输出 对于不支持 HTML 代码的地方,可用编码输出。如: Server.UrlEncode 等方法编码输出。 优点:安全可靠。 缺点:不支持 HTML 代码。 对于验证输入的另一面就是编码输出。编码输出,是用来确保字符被视 为数据,而不是作为 HTML 元字符被浏览器解析。这些技术定义一些特殊 的“转义”字符。没有正确转义的数据它仍然会在浏览器中正确解析。编码 输出只是让浏览器知道数据是不是要被解析,达到攻击无法实现的目的。 需要编码的部分: HTML 实体 HTML 属性 Javascript CSS URL 5.1.3.35.1.3.3 辅助防御方式辅助防御方式 防御手段一:防御手段一:iframe security=“restricted” 保护级别:保护级别:★★★★ 描述:描述: 通过设置 iframe security=“restricted”,能有效防止iframe 类的攻 击(对 IE 有效)。 优点:优点:有效防止 iframe 的攻击。 防御手段二:防御手段二:HttpOnly 保护级别:★★