软件系统的安全开发探讨.docxVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

??

?

??

软件系统的安全开发探讨

?

?

?

?

?

??

?

?

?

王晓峰

中国电信股份有限公司海南分公司(海南海口)570105

摘要:众所周知,网络安全正变的越来越重要,同时随着信息技术的深入发展,网络安全问题也日趋严峻,大家都在不断加强信息系统的网络安全防护,加强网络安全信息统筹机制、手段、平台建设,加强网络安全事件应急能力,但是网络攻击复杂度高、隐蔽性强,如果仅仅靠网络安全系统防护,很多威胁难以被准确识别和防御。信息系统安全更多是软件的安全,最难修补的也是软件安全漏洞,只有在软件开发设计阶段做好安全防护设计,才能更好的进行网络安全防护。

关键词架构框架漏洞容器

概述

在实际工作中我们发现,网络安全的治理,最难治理的就是软件方面的安全,软件安全漏洞的修复往往需要耗费较长的周期和较高的成本,涉及到大量的代码修改,甚至涉及到软件重构等一系列的问题。

过去我们通常是基于业务需求的思路,委托第三方开发,而对第三方的是如何进行设计与开发的,我们并不关心,只关心是否实现了我们的需求。而第三方软件设计及开发通常采用基于到达特定应用目的设计,都是按照正常使用的逻辑思维的。而对安全方面没有过多考虑,这就造成现在大量软件系统都存在安全隐患。实际上如果软件在开发设计阶段就考虑安全问题,进行必要的防护,软件自身的安全漏洞会大幅度的降低,即便出现漏洞也容易修补。

开发设计阶段就考虑安全问题,发现和纠正安全问题也容易,要比在软件开发完已经开始用了以后再发现纠正安全问题的成本低很多,如果因为安全问题而造成的损失代价就更大。

目前主流开发语言有Golang、java、Scala、KotLin、C/C++、C#、JS、Python等等、框架有Gin、Beego、SpringBoot、SpringMVC、Django等等,本文从通用软件开发角度,高度抽象、分层次的对软件开发安全进行论述。

软件开发设计方面的安全

设计思想安全

软件系统设计首先要本着先进性、安全性的原则进行设计,采用高内聚,低耦合的设计思想,这样才能保证软件的模块之间相互依赖度最低,便于软件的维护和功能扩充。应优先选择代表技术发展方向、维护力度大,社区人气旺的技术,这样才能避免出现问题找不到解决方案;技术选型要避免选择已经淘汰的、或缺乏维护的、活跃度低的技术(比如ejb、struts、ibatis、angular1.0等),这样才能避免因技术淘汰,不再有人进行维护,出现安全漏洞也没有相应的补丁的情景发生;也要尽量避免采用服务于小众化的技术,小众化的技术往往成熟度不高,风险较高;要避免使用已经被废弃的函数、方法、类,因为被废弃的最大原因就是安全和效率。尽量采用前后端分离的开发技术,以便提高开发效率。

软件架构安全

架构设计除了要考虑可扩展性、可靠性、强壮性、灵活性、性能等,还要重点考虑安全性。尽量以业务为核心进行分层(组件/模块化)设计,尽量划分各层(组件/模块)的业务功能独立,数据库划分尽量保持相对独立性,这样层次分明,界限清晰,软件就不容易出现漏洞;登陆、权限验证尽量使用SSO单点登陆系统,便于权限管理的清晰和一致性,避免出现管理混乱;系统架构优先考虑成熟的微服务、Servless,微服务或Servless每个服务功能单一,耦合度底,便于安全管理。

选择开发模式

目前业内服务器端通常都采用MVC模式进行结构化开发,客户端采用MVVM或MVP模式进行开发,这样层次分明,各层负责各层的工作,不交叉,界面清晰。这样有利于程序员专注开发,从而提高代码的质量,避免出现漏洞。

对于访问量高得业务,宜采用高并发集群技术、数据库读写分离和缓存(比如redis)的技术,这样可避免单点故障造成整个服务崩溃,确保业务系统的安全运行。

软件开发阶段的安全考虑

做好权限设计

对用户的权限分配应按照最小权限原则进行设计,限制用户只能访问其所必须需的功能、数据、文件或系统信息。避免出现用户获得其不该获取的信息,同时限制只有授权用户才能访问受保护的URL、功能、对象引用、服务、数据。防止非授权访问。

做好数据安全

敏感数据的安全

开发时,要注意保护所有存放在服务器上缓存或临时拷贝的敏感数据,避免被非法访问,临时文件不需要时,要及时删除。

对于敏感信息(包含账号密码、用户身份信息、用户行为轨迹、通信信息、消费信息等),必须采用加密存储,加密传输,加密算法必须采用经实践验证可靠的算法(比如AES加密算法)。

HTTP或HTTPS的访问安全

应禁止在HTTPGET请求参数里传递敏感信息,session只能在HTTPhead里传送。Web服务推荐使用HTTPS协议,使用HTTPS要保证证书有效,必须保证域名在业务有效期内不会过期,避免出现因认证域名过期被黑客利用。

要对用

您可能关注的文档

文档评论(0)

134****9594 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档