从 应 用 的 架 构 、设计和研发角度总结了构 建安全应 用 的 十大控制措施,致力于提高软件设计和开发人员的 安全意识和能力,进而提升应 用 的 安全性。这十大措施中,有的 很具体,有的 只是通用 的 分类,有的 是技术性的 ,有的 是过程相关的 。 不过,仅仅指出问题往往是不够的 ,开发人员是应 用 的 基础,为了开发出安全的 应 用 ,必须要为他们提供必要的 帮助和支持。编写Web 应 用 的 软件开发人员需要掌握和练习各种安全编码的 技术。Web 应 用 的 每一层,包括用 户界面、业务逻辑、控制器以及数据库代码,在编写的 时候都必须将安全问题牢记在心,这可能是非常困难的 一项任务,因为大多 数开发人员并 没 有太 多 安全方 面的 知 识,而用 来 构 建Web 应 用 的 语 言 和框 架 在安全方 面通常缺 乏 必要的 控制。在需求 和设计阶 段 ,可能也 会 有固 有的 缺 陷 ,很少 有组 织 为开发人员提供需求 规 约 以指导他们编写安全的 代码。 1. 参 数化 查 询 SQL 注 入 是Web 应 用 中最 危 险 的 漏 洞 之 一,因为SQL 注 入 较 为容 易 被 黑客 探 测 到 并 且 会 给 应 用 带 来 毁 灭 性的 打 击 。只需在你 的 Web 应 用 中注 入 一条 简单 的 恶 意SQL,你 的 整 个 数据库可能就 会 被 窃 取 、擦 除 或 者 篡 改 。在运 行 数据库的 主 机 上 ,甚 至 可以借 助Web 应 用 执 行 危 险 的 操 作 系 统 命 令 。为了防 止 SQL 注入 ,开发人员必须阻 止 那 些 不可信 任的 输 入 ,这些 输 入 将会 解 析 成 为SQL 命 令的 一部 分。要实 现 这一点 ,最 好 的 一种方 式 就 是使 用 被 称 做 查 询 参 数化 ( Query Parameterization) 的 编程技术。 例 如 ,在Java 之 中,查 询 参 数化 如 下 所 示 : 1. String newName = request.getParameter("newName"); 2. String id = request.getParameter("id"); 3. PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID = ?"); 4. pstmt.setString(1, newName); 5. pstmt.setString(2, id); 2. 对 数 据 进 行 编 码 编 码 ( encoding) 是 一...