HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

坚固软件宣言

  • 2010-07-01
  • 本文字数:1803 字

    阅读完需:约 6 分钟

在很多软件项目中,安全,常常要么被人忽视,要么事后才被人想起。多数软件团队更希望多完成一些现有的功能,而不是花时间避免可能出现的安全漏洞。为了帮助开发人员认识到“坚固的”软件的重要性, Joshua Corman David Rice Jeff Williams 建立了“坚固软件宣言”。

Bill Brener 提出:“坚固”并不是意味着无法攻破,而是说要比我们以前的产出要好许多。这在软件开发人员构建起了新的文化,基于强健和承诺改进的新文化。Bill 补充道:即使已经有了一些强制性的软件安全开发方法,比如 BSIMM(the Building Security In Maturity Model) SDL(Security Development Lifecycle),坚固还是要更好一些。

坚固等于更进一步,其想法是要在把代码变得更安全之前,开发人员自己要先“强壮”起来。漏洞是人犯错误的结果,如果你改变人的态度,好结果会随之而来。不管怎么说,这就是希望。

Jeremiah Grossman 提到:在如今软件开发的场景中,开发人员没有动力让代码变得更安全。利益干系人更愿意在功能上花费更多,而不是安全性;如果出现了安全漏洞,开发人员也很少被惩罚。Jeremiah 建议:尽管他不提倡使用惩罚,但是应该有些东西让开发人员能为自己的优秀工作感到骄傲,如果不好的话,要为之尴尬不安,就像“坚固软件宣言”中提倡的同事压力那样。

Kelly Jackson Higgins 引用了 CTO 的话,以证明对于“坚固”的喜爱:

Veracode 的 CTO Chris Wysopal 认为:开发人员必须是安全问题解决方案的一部分。 “然而,多数开发人员不知道如何编写安全的代码,更糟糕的是,如果他们写出了高质量的代码,他们就自以为已经写出了安全的代码。软件安全的实践者们已经在努力跨越这种心态。坚固的代码是一种突破,并注入这样一种心态:安全的代码同样应该成为引以为傲的源泉,就像优雅的、表现出色的高质量代码一样。”

坚固代码宣言这样说:

  • 我很坚固,更重要的是,我的代码很坚固。
  • 我知道软件已经成为当今世界的重要基石。
  • 我知道这种基石角色随之而来的就是重大的责任。
  • 我知道我的代码会以我没有预期到的方式使用,会以与其当初设计目标不同的方式使用,使用期限也会超出最初预期。
  • 我知道我的代码会被充满才华而有毅力的敌对者攻击,他们会威胁我们的物质世界、经济运行和国家安全。
  • 我知道这些事实,因此我选择变得坚固。
  • 我很坚固,因为我拒绝成为漏洞和弱点的来源。
  • 我很坚固,因为我的代码能够面对这些挑战,并不受它们的影响而继续运行。
  • 我很坚固,不是因为这样做简单,而是因为这是必然之选,而且我已准备好面临挑战。

尽管很多人支持这些努力,但也有人对这个想法不以为然。

Pete McBreen 认为:“坚固软件宣言”必将遭受被人讽刺、模仿的结果。其中有几句还说得不错,但总体而言太过矫饰了。

Jim Bird 同样指出:“坚固软件宣言”试图复制敏捷宣言的成功。后者之所以成功,是因为像 Kent Beck 和 Ward Cunningham 这些在实际开发软件的人在推动它。“坚固软件宣言”要想成功,就需要得到软件开发社区的支持,仅有应用安全社区的支持是不够的。Jim 进一步提到:围绕这个运动缺少相关活动。他认为:

我注册了“坚固软件”论坛、博客、列表等等。呃,可是相关内容只有一个声明和一些新闻稿。关于坚固的宣言、空白的博客和空空如也的论坛,这就是我目前所能找到的一切。因此,我想我的步子迈得有点太快了。接下来我会等待,看是否有真正的机会,给予软件开发社区动力,并为它们说话,这就能有真正的成功机会。

Corman 回应了与敏捷宣言共存的疑惑,他说

这是个争论热点。敏捷所谓抓紧时间、赶紧交付、迭代式的态度真得会导致更严重的安全问题。这个讨论需要提上议事日程,我们也已经开始了。

Andrew Fried 宣言中的 10 条压缩为 3 条主要想法,在他看来是这样的:

  • 软件应该做到它声称做到的事情。
  • 来自中国和俄罗斯的恶意软件包每一天的每一分钟都在袭击互联网,软件不能让我的系统为它们打开方便之门。
  • 软件应该保护自己不受用户损害。

因此,尽管有很多钱花在开发软件功能上,让软件变得更坚固的努力仍然需要得到更多推动。不管“坚固软件需要”是否能让开发人员走上正确方向,看起来是个新起点。正如 Joshua Corman 所说

开发人员在写代码时,假定唯一的工作就是完成某个功能。但这会导致软件存在不为人知的漏洞,造成经济损失、数据丢失、降低生产力。大量程序员不知道自己的代码正在遭受充满才华、坚持不懈的敌人的攻击,我们必须让他们认识到这一点。

查看英文原文: The Rugged Software Manifesto

2010-07-01 23:111645
用户头像

发布了 479 篇内容, 共 158.0 次阅读, 收获喜欢 49 次。

关注

评论

发布
暂无评论
发现更多内容

Windows编译环境介绍

Loken

音视频 5月月更

error: conflicting types for xxx in c

codists

c

[Day46]-[数组]-三数之和

方勇(gopher)

数组 双指针 LeetCode

2.3 廷克图(TinkerGraph)介绍

Geek_古藤模根

Gremlin 廷克图 图数据库 TinkerGraph

为什么人工智能需要可解释性?

博文视点Broadview

对于编程思想和能力有重大提升的书有哪些?

宇宙之一粟

书单推荐 编程思想 5月月更

客观的聊一聊,裁员这件糟心事

互联网 职场 裁员

JAVA SPI机制

源字节1号

什么是区块哈希?哈希趣投娱乐竞猜游戏开发逻辑(成熟源码)

开发微hkkf5566

LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)

不脱发的程序猿

单片机 LabVIEW LIAT Arduino Uno PWM呼吸灯

哈希能作弊吗?哈希竞猜游戏防作弊系统开发逻辑(稳定运营)

开发微hkkf5566

Java【开发入门学习】笔记一

恒山其若陋兮

5月月更

OpenMLDB 实时引擎性能测试报告

第四范式开发者社区

人工智能 机器学习 数据库 性能分析 特征平台

一键式打造DAO,M-DAO或成Web3新宠儿

股市老人

跨平台应用开发进阶(十七) :uni-app实现内嵌H5应用

No Silver Bullet

uni-app 5月月更 内嵌H5应用

基于云服务MRS构建DolphinScheduler2调度系统

华为云开发者联盟

大数据 MRS 华为云 DolphinScheduler 调度处理

今天爬,明天没,天津市XX网 详情页加密逻辑拆解,文中关键字已经加密

梦想橡皮擦

5月月更

Golang 的艺术、哲学和科学

宇宙之一粟

Go 语言 5月月更

使用 Provider 搞定 Flutter 的局部刷新

岛上码农

flutter ios 前端 安卓开发 5月月更

全链路压测(十四):生产全链路压测SOP

老张

性能测试 全链路压测 稳定性保障

LabVIEW控制Arduino流水灯(基础篇—3)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 流水灯

一键式打造DAO,M-DAO或成Web3新宠儿

BlockChain先知

Docker下RabbitMQ四部曲之三:细说java开发

程序员欣宸

Java Docker RabbitMQ 5月月更

模块二,微信朋友圈架构

泋清

#架构实战营

助力传统游戏转型GameFi,Web3Games推动游戏发展新航向

One Block Community

区块链 黑客马拉松 gamefi Web3.0

LabVIEW控制Arduino采集电位器电压(基础篇—4)

不脱发的程序猿

单片机 LabVIEW LIAT Arduino Uno 采集电位器电压

Maven 跳过测试的几种方式

HoneyMoose

电子邮件的传送过程

工程师日月

TCP 5月月更

朱啸虎称赞的Web3,进入MOVE PROTOCOL将直达

股市老人

JAVA什么是反射?

源字节1号

软件开发

【LeetCode】检查句子中的数字是否递增Java题解

Albert

LeetCode 5月月更

坚固软件宣言_研发效能_Vikas Hazrati_InfoQ精选文章