SCI论文(www.lunwensci.com)
摘要:无论是航天飞机、人造卫星等尖端科技,还是煤炭、电力、港口等传统行业都离不开软件开发的建设,软件安全问题也是广泛存在,并且造成的影响有时候不可估量。软件安全问题究其根本在于软件本身存在安全漏洞并面临外部安全威胁,为了应对严峻的软件安全问题,国内外一直在研究软件安全管理、全开发流程等。本文通过在传统的软件项目开发流程中,引入SDL安全开发流程,提高软件产品安全质量,降低软件安全隐患。
关键词:SDL;软件开发;应用
Application of SDL Security Development Process in Software Development
LI Xiaoyun,LIU Haifeng
(Guoneng Netcom Technology(Beijing)Co.,Ltd.,Beijing 100011)
【Abstract】:No matter the cutting-edge technologies such as space shuttles and artificial satellites,or the traditional industries such as coal,power,ports,etc.,are inseparable from the construction of software development.Software security problems are also widespread,and the impact is sometimes incalculable.The root of the software security problem is that the software itself has security vulnerabilities and faces external security threats.In order to deal with severe software security problems,software security management and full development process have been studied at home and abroad.In this paper,SDL security development process is introduced into the traditional software project development process to improve the security quality of software products and reduce software security risks.
【Key words】:SDL;software development;application
0引言
为了应对严峻的安全开发问题,国内外政府、组织一直在研究出台软件安全相关法律法规[1,2]。要求软件从业人员需了解其相关的法律法规内容,在软件开发生命周期各阶段采取必要的安全措施,尽管不能完全杜绝所有的安全隐患,也可以做到避免和减少大部分安全隐患。典型的软件安全开发模型有以下几种:安全开发生命周期(Security Development Lifecycle,SDL)、敏捷的SDL模型、ISO/IEC27034,McGraw的7个接触点模型BSI和软件安全开发成熟度模型BSIMM。本文将介绍安全开发生命周期SDL在通用服务软件软件开发中的应用[3,4]。
1安全开发生命周期SDL介绍
SDL模型是由软件工程的瀑布模型发展而来的,在模型的各个阶段添加了安全活动。
SDL的核心思想:在传统的瀑布开发模型各个环节中加入安全活动和可交付物。如果确定对某个软件开发项目实施SDL控制,则需要完成16项安全活动,才符合MicrosoftSDL。SDL的风险分析流程中的安全需求分析和安全设计融合在一起,不分顺序,而STRIDE威胁建模贯穿了整个SDL风险分析流程。STRIDE威胁建模并不仅仅是针对安全设计的,越在早期做威胁建模损失越小。本文将针对基础软件的鉴权类功能进行威胁建模,提供其他业务系统登录、授权等核心安全功能。
2 SDL在软件开发中的应用
软件总体架构图如图1所示。
系统定位于支撑包括化工生产运营综合管控、煤炭生产执行系统等各类大中型项目建设,通过对接主数据软件,同步内部组织机构、人员信息。软件同时提供维护企业外的人员信息,并采用CAS单点登录和4A集成,从而提供内部员工、外部员工认证的登录认证。软件另外一个重要功能基于角色的权限管理,对菜单、按钮、组织机构进行分角色授权,并对业务操作提供日志审计。各大中小型项目均可使用软件内的基础功能,无需重复建设。
针对安全需求,软件对相关安全的设计原则和方法如下[5]:
(1)审计日志来记录软件提供的服务,日志的内容必须包括当前会话JWT令牌、IP地址和时间。记录日志的事件还包括帐户验证尝试、帐户锁定、应用错误等内容。
(2)身份验证:软件的登录用户来自于集团4A用户和通过软件维护的外部人员。通用服务软件通过单点登录CAS对两类用户进行身份验证,身份验证凭必须包含适当的强度,其中包括大写字母、小写字母和数字字符,而且在长度上不能小于8个字符。连续输入密码3次以上账号锁定,要求30min以后才能再次登录;如果是集团内部员工只能通过4A方式进行登录。外部员工登录密码管理制度和4A账号管理一致:登录密码不能是初始密码,密码最少3个月得修改一次密码,修改密码只能修改为强密码。
(3)会话管理:一个合法用户自始至终可以保持正常访问;通用服务软件基于JWT令牌的方式对前后端访问进行身份认证:在登录到系统之后访问前端资源时,请求获取令牌服务,将令牌存入到会话中,该令牌用于请求资源访问权限的授权许可。
(4)输入验证和输出编码:SQL注入是一种数据库攻击手段,攻击者通过向应用程序提交恶意代码来改变原SQL语句的含义,进而执行任意SQL命令,达到入侵数据库乃至操作系统的目的。首先,避免使用“+”拼接用户传入的参数到SQL中;其次,使用MyBatis框架时,必须使用#{},避免使用${}。
1)正确使用参数化API进行SQL查询。
2)如果构造SQL指令时需要动态加入约束条件,可以通过创建一份合法字符串列表,使其对应于可能要加入到SQL指令中的不同元素,来避免SQL注入攻击。
XSS存储型跨站脚本攻击:攻击者通过在HTML上注入恶意<script>脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如Cookie、SessionID等,进而危害数据安全[6]。
①需要对用户的输入进行处理,只允许用户输入期望的数据,其他值一概过滤掉;
②对数据进行HtmlEncode处理过滤或移除特殊的Html标签,构造的Script可能会被过滤掉,而无法生效或者环境限制了执行,例如:<script>,<iframe>,<for<,>for>,"for、‘’单引号、“”双引号、/斜杠、反斜杠、)括号、分号、[中括号、<尖括号、>尖括号、过滤JavaScript事件的标签。例如“onclick=”,“onfocus”等。
(1)XSSFilter(检查输入,设置白名单方式)。
(2)输出检查(编码,转义,常用编码:HTML编码、JS编码、16进制等)。
(3)针对不同位置的输出,使用不同的处理方式。
(4)处理富文本。Header中使用Content-Sencurity-Policy字段,规定请求JS的域名白名单(CSP策略)。
(5)配置管理:提交到配置库的密码,使用加密;使用Druid做为数据库连接池,自身支持加密;也可配合Jasypt框架,加密。
(6)访问控制模型有以下几种类型:自主访问控制(DAC)模型、非自主访问控制(NDAC)模型和强制访问控制(MAC)模型以及基于角色的访问控制(RBAC)模型。
RBAC是一个更加灵活和高效的访问控制模型,应遵照最低权限和职责分离原则(Separation of Duties)角色只授予需要的资源;通用服务软件对主体通过分配的角色,访问相应的资源。对客体的权限包括创建、读取、更新或删除等。客体(资源)不是直接映射到主体(个体),而是映射到角色。主体可能会发生变化,而角色通常不做经常变动主体可以容易地被分配或撤销角色,从而方便进行用户管理。
降低受攻击面策略重要等级为低的功能(如图2所示):攻击面大,取消该功能重要等级为中的功能:攻击面大,设置为非默认开启,需要用户配置后才予以开启重要等级为高的功能:攻击面大,关闭或限制一些接口方式,增加一些安全的保证措施或技术。
在软件开发过程中,采用了SonarQube自动代码审查工具,检测代码中的错误、漏洞和代码异味。结合Jenkins打包工具,自动生成代码分析报告,根据指标参数,结合报告中的提示进行从BUG修改、代码重复率、测试覆盖率等问题提升代码质量。
根据使用Sonar工具之后代码质量的一段时间的变化趋势可以知道,软件可以针对性的解决代码的BUG,重复率等问题,提升代码单元覆盖率。
3结语
通过安全开发生命周期SDL在软件开发中的应用,特别是在安全设计阶段考虑安全特性的重要性,安全设计要求、攻击面分析与降低、威胁建模等能够大幅减少重新设计、重构系统以及经常出现安全漏洞的可能性,通过威胁建模还可以考虑组件或应用程序级别的安全问题。在开发阶段借助于Sonar代码审查工具,可以极大地在开发阶段减少软件中的漏洞数量,降低任何未能发现的安全BUG对软件影响的严重性。本次安全生命周期SDL在通用服务平台的实践主要集中于需求、设计、开发、测试阶段,对于测试阶段的应用还不够深入,有待进一步研究和实践。
参考文献
[1]毕海英,张翀斌,石竑松.如何用通用评估准则指导我国信息安全标准的制定[J].中国信息安全,2015,(2):92-95.
[2]国家质量技术监督局发布.GB/T18336•2-2001信息技术安全技术信息技术安全性评估准则第2部分:安全功能要求[M].北京:中国标准出版社,2001.
[3]刘永磊,金志刚,郝琨,等.基于STRIDE和模糊综合评价法的移动支付系统风险评估[J].信息网络安全,2020(2):49-56.
[4]石竑松,高金萍,贾炜,等.CC标准中安全架构与策略模型的分析方法[J].清华大学学报(自然科学版),2016(5):493-498.
[5]刘佳杰,伍宇波,张煜,等.威胁建模在安全态势感知中的应用研究[J].中国金融电脑,2018(11):81-85.
[6]陈平,双锴,皇甫大鹏.基于STRIDE威胁模型的教育云安全风险评估研究[J].中国教育信息化,2017(5):15-19.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/61956.html