自上而下做好安全代码审查

原创 2013年12月03日 22:32:00

安全的程序开发实践的一个关键方面就是安全代码审查。安全代码审查,与常规的代码审查一样,可以使用自动化工具完成,也可以要求开发者亲自参与到代码审查中人工完成。那么,安全代码审查与常规的代码审查有哪些差别、如何做到更有效的安全代码审查呢?大家可以通过本文了解一下。

安全代码审查:对安全知识要求高

常规的程序代码审查需要代码审查者具备业务、程序语言和相关技术知识的积累,安全代码审查则需要具备以下 3 个不同方面的安全知识:

让安全代码审查更有效:自上而下

要做到有效的安全代码审查,方式之一就是采用自上而下的方法,此方法要求代码审查者了解用例细节且对此有比较深入地掌握。进行安全代码审查,建议你按照下面的步骤进行。

1,了解待审查代码的用例细节

2,分解用例


以下面形式分解用例,该种分解属于数据流图(DFD)式威胁模型:

  • 角色(Actor,外部实体)
  • 数据流
  • 应用程序/模块
  • 数据存储

3,识别威胁

STRIDE 可用来识别对上述元素的威胁。STRIDE,是“假冒身份、篡改数据、否认、信息泄露、拒绝服务和权限提升”英文单词的缩写(对应的英文为 Spoofing Identity、Tampering Data、Repudiation、Information Disclosure、Denial of Service 与 Elevation of Privelege)。比如,角色(Actor)可能会受到来自“假冒身份”和“否认”的威胁;数据流可能会受到“篡改数据”、“信息泄露”和“拒绝服务”等方式的威胁等。

4,检查安全漏洞

一旦威胁与全部元素发生了关系,则需检查潜在的可能转变为攻击的安全漏洞。如,SQL 注入,会话处理,已破坏的验证与授权等。可以查看文章 
OWASP Top 10 了解常见的 10 种安全漏洞。

5,做好补救控制

一旦确认安全漏洞,则需检查补救控制措施是否到位或针对这些漏洞的措施是否恰当。这些补救控制措施通常就是更为安全的代码。可以在
OWASP Top 10 每个单独链接页查看相应的补救控制措施建议。

下面针对部分威胁和安全漏洞给出了对应的补救控制建议:

    • SQL 注入攻击:在查询相关的代码中搜索参数化 API(parametrized API)的使用情况。同时,也要请求一个或多个输入验证架构,如 OWASP ESAPI 用在转义可能带来注入攻击的字符的情况。
    • 跨站点脚本攻击(XSS):搜索基于 HTML 上下文(主体、属性、JavaScript、CSS或URL)用于转义全部不受信任数据的代码。可以查看 OWASP 跨站点脚本攻击备忘了解数据转义技术细节。
    • 敏感数据曝光:查询敏感数据并检查该类数据的存储策略。可以从代码角度来检查数据的加密强度。
    • 功能级权限控制缺失:在代码审查时,要确认何人具备访问该功能的授权、是否根据用户类型赋予了其合理的权限控制。在控件或业务逻辑中,数据集有时仅能由特定类型的用户进行访问。

结语

目前,对部分开发者来说,可能还需要一定程度的安全培训才能胜任安全代码审查工作、实现有效的安全代码审查。代码的常规审查不可少,安全审查也不可少,对安全性要求较高的程序尤其要注意。如果缺少了这道流程,万一遭受攻击,带来的损失将远超过我们的想象,“预则立,不预则废”说的就是这个道理。

 

 

http://www.iteye.com/news/28477-application-security-code-review

代码审查“查”什么?

让我们来谈谈代码审查(Code Review)。如果花几秒钟去搜索有关内容,你会发现许多论述代码审查好处的文章(例如,Jeff Atwood的这篇文章)。你还会发现许多介绍如何使用代码审查工具的文档,...
  • shuilaner_
  • shuilaner_
  • 2017-11-18 20:34:06
  • 381

三款主流静态源代码安全检测工具比较

静态源代码安全检测工具比较 1. 概述 随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题...
  • whatday
  • whatday
  • 2017-01-07 00:38:56
  • 15296

java代码的安全性

虽然客户仍然很关心您为他们构建的应用程序的可伸缩性和可用性,但他们可能变得也很关心安全性,而且要求特别严格。应用程序可能容易受到两类安全性威胁的攻击:静态和动态。虽然开发人员不能完全控制动态威胁,但在...
  • mgp1030
  • mgp1030
  • 2007-05-16 23:32:00
  • 4911

Java 代码安全(Coding Safe)

您的JAVA代码安全吗? 核心提示:虽然客户仍然很关心您为他们构建的应用程序的可伸缩性和可用性,但他们可能变得也很关心安全性,而且要求特别严格。 虽然客户仍然很关心您为他们构建的应用程序的...
  • u011216417
  • u011216417
  • 2015-11-03 19:05:36
  • 551

8 个开发更安全代码的简单规则

我非常荣幸在过去的几年中曾经与数千位出色的开发人员一起工作,他们希望了解如何编写更安全的软件。在此期间,我也从构建安全系统方面表现出色的人员那里学到了很多东西,这使我开始思考一个问题。我在想“安全开发...
  • jiangfeng128
  • jiangfeng128
  • 2006-11-17 14:26:00
  • 831

代码审查如何做

代码审查如何做代码审查如何做做 Code Review 的正反方观点 Review时 什么该关注 什么不该关注 Code Review 时不该关注的 Code Review 时该关注的 体系结构和代码...
  • wzzfeitian
  • wzzfeitian
  • 2017-01-22 23:05:46
  • 4255

帮助我们审核网络安全的十大工具

本文主要讲述了可以帮助我们审核网络安全的十个工具。   一、Nessus:这是一款UNIX平台的漏洞评估工具,可以说它是最好的、免费的网络漏洞扫描程序。其更新速度很快,有超过11000个插件。其关键特...
  • edison20
  • edison20
  • 2007-11-15 22:26:00
  • 242

自上而下做好安全代码审查

安全的程序开发实践的一个关键方面就是安全代码审查。安全代码审查,与常规的代码审查一样,可以使用自动化工具完成,也可以要求开发者亲自参与到代码审查中人工完成。那么,安全代码审查与常规的代码审查有哪些差别...
  • lyt19880901
  • lyt19880901
  • 2013-12-03 22:32:00
  • 695

代码审查审什么

代码审查审什么看着很多人做代码审查重点审格式和命名,制定的代码规范也主要偏重代码格式和命名,我真想骂一句操蛋,这真是浪费时间又解决不了问题。此篇文章就是骂完操蛋后奋笔快速敲下来的,有不妥之处请大家谅解...
  • david_lv
  • david_lv
  • 2014-07-25 13:18:37
  • 74803

java 代码审查规范

java 代码审查1.工具类或者常量类里面的方法都是静态的,建议直接用类名调用,不用创建对象,所以将构造方法私有化,禁止创建对象 error example: public class Stri...
  • u010742049
  • u010742049
  • 2017-03-28 18:33:31
  • 519
收藏助手
不良信息举报
您举报文章:自上而下做好安全代码审查
举报原因:
原因补充:

(最多只允许输入30个字)