阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

坚固软件宣言

  • 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:111518
用户头像

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

关注

评论

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

全自动、可视化开发,成为敏捷转型落地关键词

SoFlu软件机器人

GitHub 3.1K,业界首个流式语音合成系统开源!

百度开发者中心

快速上手vs2019

Loken

音视频 5月月更

2022云原生安全发展24个洞见

青藤云安全

网络安全 容器安全 镜像安全

【LeetCode】单词长度的最大乘积Java题解

Albert

LeetCode 5月月更

架构实战营 第 6 期 模块七课后作业

火钳刘明

#架构实战营 「架构实战营」

详解GaussDB(DWS)的CPU资源隔离管控能力

华为云开发者联盟

数据库 cpu GaussDB 资源管控

phpstorm 配置 Xdebug 调试

CRMEB

开发技术指南 | 最全 Substrate 与 Polkadot 技术文档、教程、课程

One Block Community

区块链 技术 波卡生态

2022年第1季度中国跨境进口零售电商市场规模为983.1亿元

易观分析

跨境电商

AI+工业互联网:百度AI专利讲述“中国智造”

百度开发者中心

昆仑芯科技加入龙蜥社区 ,赋能智慧开源,共筑AI芯生态

OpenAnolis小助手

芯片 龙蜥社区 CLA 昆仑芯科技

大数据培训实时数仓实践以及架构的演进

@零度

数仓 大数据开发

影视作品制作中不可或缺的技术支撑——云渲染技术

Finovy Cloud

服务器 云渲染 GPU算力

银行应将低代码能力作为在评估厂商综合能力的一个维度

易观分析

低代码 银行

陆奇:“黑客精神”过时了吗?答案是永远不会

图灵教育

nginx 程序员 服务器 计算机

OpenYurt v0.7.0 版本解读:无侵入的跨网络域解决方案 Raven

阿里巴巴云原生

阿里云 开源 云原生 边缘计算 openyurt

Docker容器:将带UI的程序直接转为Web应用,so easy

华为云开发者联盟

云计算 后端 Docker容器 Web应用

查询语句写了limit 1,为什么依然很慢?

华为云开发者联盟

后端 开发 计算引擎 limit 1

LR.Net低代码开发平台 快速设计权限管理模块

力软低代码开发平台

解读ICDE'22论文:基于鲁棒和可解释自编码器的无监督时间序列离群点检测算法

华为云开发者联盟

数据挖掘 数据库 时间序列 自动编码器

软件开发模型有哪些?

源字节1号

软件开发

技术分享| 快对讲调度系统设计概要

anyRTC开发者

音视频 语音通话 调度 视频通话 快对讲

第一次读 “Clean” 系列,并没有觉得这是一本多好的书

博文视点Broadview

国内首个纯数字藏品元宇宙世界“ADAMeta”星城宇宙开启公测

最新动态

Serverless JOB | 传统任务新变革

Serverless Devs

Serverless SAE

低代码构建物联网平台,让物联网项目更简单

AIRIOT

物联网 低代码开发

Apache APISIX v2.14.1 探索性版本发布,进军更多领域

API7.ai 技术团队

服务注册与发现 API网关 Apache APISIX APISIX 网关

深入浅出Nginx实战与架构原理

C++后台开发

nginx 架构师 后端开发 Linux服务器开发 C++后台开发

墨天轮访谈 | 阿里云捷熙:AnalyticDB,人人可用的数据分析服务

墨天轮

数据库 阿里云 国产数据库

手把手教你打造一套最牛的知识管理系统

小炮

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