安全的应用程序开发和应用程序安全防御(应用安全保护)

网友投稿 644 2022-09-10

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

安全的应用程序开发和应用程序安全防御(应用安全保护)

摘要

这一系列的应用协议都是采用明文传输的,没有进行任何加密措施,在当时如何将世界各地的人联系在一起和增加新的功能才是最高优先级。黑客非常容易就可以截取传输的内容,在经过非常惨痛的损失后才出现了加密传输协议「FTPS,SMTPS,SSH 以及 HTTPS」。假如互联网在在设计之初就对安全进行很好的的设计,就不会出现现在这么多安全问题了。

同样的情况发生在软件开发过程,安全开发的优先级永远低于功能的开发,都是在开发后期才考虑安全问题。本文主要讨论如何开发安全软件以及探讨为什么 SDLC (系统开发生命周期)是开发安全软件的最理想模型。

该模型引出 「安全设计」和「深度防御」的方案,安全开发应该是 SDLC 过程的一个非常重要的组成部分,应该在软件开发和测试的每个过程将安全完整的进去,越早期修复安全漏洞所花费的成本,时间和代价都是最低的。

应用层安全攻击

随着时间的流逝,网络攻击不断沿着 OSI 协议模型往上移动的趋势越来越明显,大多数攻击集中在应用层,在80、90年代的大多数攻击集中在 OSI 模型的1层,2层和3层,​现在网络层的防护已经非常出色了,但是应用层安全仍然是一个很大的挑战。

应用层防护方案

虽然应用程序保护方案在一定程度上能防护网络攻击,但是作为底线,你不能写一个充满漏洞的程序然后依赖安全保护系统来保护。

安全的 SDLC 流程

上面讲到的安全防护措施的确能起到一定的保护作用,但是绝不是最好的办法,最好的办法就是让应用程序能真正的自己保护自己,尽可能少的漏洞。要做到这一点就需要从程序设计的初始阶段把安全考虑将来并且将安全嵌入到SDLC 即需求收集、设计、开发、测试以及实施的各个阶段。

下面笔者就详细讨论在 SDLC 各个阶段需要做哪些方面的安全工作。

需求分析

设计阶段

在设计阶段:设计人员应该树立良好的安全意识,清楚现有的安全模型有哪些,应用程序可能面临哪些安全威胁,攻击途径可能有哪些,实施哪些安全策略和计划会缓解安全攻击的危害性,以及如何去实施这些安全测试。

这段视频非常清楚的介绍了安全模型方面的知识:

开发阶段

写出安全代码首先需要制定安全代码规范,各种语言都有现成的代码安全规范,企业可以根据自己的情况进行适当修改。同时要对项目中所有的开发人员培训安全编码规范,确保每个人能够完全明白如何编写安全的代码。最重要的一步就是要确保每行代码都符合安全规范,每个开发提交代码前都应该由安全专业人员对代码进行安全审查,确保代码的安全性,审查员非常关键可以是公司内部的资深安全人士,也可以聘请第三方专业人士(这种 Review 可能更客观一些)。

测试阶段

还有特别需要注意的是应用程序本身逻辑的 Bug,程序是多种多样的,每个应用程序的功能逻辑是不一样的,这方面的 Bug 如果在设计和开发阶段做的足够好的话应该不会有太多 bug,同时通过功能和系统测试可以消除这方面的 Bug。

部署

在确保没有漏洞后,将系统部署到生产环境,在部署过程中应该遵守安全部署,不讲新的漏洞带入到生产环境。部署完成后再使用漏洞扫描工具进行扫描,确保没有漏洞发现。同时要确保环境配置和环境是安全的,比如 Tomcat 等容器有相应的安全配置,操作系统,容器以及使用的第三方软件保持最新的状态。

后语:

坦率地讲,这是一个比较理想的开发模式,真正能完全执行的项目很少,各种因素都会导致重功能而轻安全的情况比如:开发周期快,上线压力大,人员素质无法满足,安全资源缺乏等等。但是在这里我还是呼吁所有的软件提供商重视安全,早期安全投资一块钱,收获将是100块。

在的确没有能力去实施 SDLC 的企业,上面提到的 RASP 技术是退而求其次的选择,它在一定程度充当一个虚拟补丁的作用,可以暂时修复应用程序和第三方程序的漏洞,使用 RASP 可以让企业可以将不安全的程序上线后大幅度缓解安全攻击,具备一定自我保护的能力。

上一篇:全球顶级专家为你解读:什么是真正的 DevOps?(国内权威专家观点)
下一篇:如何像后端一样写前端代码?(前端代码怎么写)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~