• 查询稿件
  • 获取最新论文
  • 知晓行业信息
官方微信 欢迎关注

企业应用软件开发安全体系的构建

王伟萌, 刘承亮, 朱韦桥, 苏伦

王伟萌, 刘承亮, 朱韦桥, 苏伦. 企业应用软件开发安全体系的构建[J]. 铁路计算机应用, 2021, 30(2): 58-62, 67.
引用本文: 王伟萌, 刘承亮, 朱韦桥, 苏伦. 企业应用软件开发安全体系的构建[J]. 铁路计算机应用, 2021, 30(2): 58-62, 67.
WANG Weimeng, LIU Chengliang, ZHU Weiqiao, SU Lun. Construction of enterprise application software development security system[J]. Railway Computer Application, 2021, 30(2): 58-62, 67.
Citation: WANG Weimeng, LIU Chengliang, ZHU Weiqiao, SU Lun. Construction of enterprise application software development security system[J]. Railway Computer Application, 2021, 30(2): 58-62, 67.

企业应用软件开发安全体系的构建

基金项目: 中国铁路总公司科技研究开发计划课题(J2018S001)
详细信息
    作者简介:

    王伟萌,助理研究员

    刘承亮,正高级工程师

  • 中图分类号: U29 : TP39

Construction of enterprise application software development security system

  • 摘要: 针对企业应用软件设计与开发过程中所需考虑的安全性问题,构建一套企业内部适用的应用软件开发安全体系。通过剖析企业应用软件常见漏洞防护技术,依照应用软件开发生命周期流程,从设计安全、编码安全、过程管理安全等方面重新梳理、补充企业应用软件开发安全体系的框架。考虑体系框架下对应安全要求,为了方便指导应用软件设计人员、代码开发人员提高应用软件安全能力,补充提出了包含技术要求的企业应用软件开发安全体系。企业应用软件开发安全体系的构建能够帮助减少软件自身缺陷,防止企业应用软件安全漏洞被黑客利用,从而避免可能导致的严重甚至是灾难性后果。
    Abstract: Aiming at the security problems that need to be considered in the process of enterprise application software design and development, this paper constructed a set of application software development security system suitable for enterprise. This paper analyzed the common vulnerability protection technologies of enterprise application software, according to the application software development life cycle process, reorganized and supplemented the framework of enterprise application software development security system from theaspects of design security, coding security, and process management security. Considering the corresponding security requirements under the framework of the system, in order to facilitate the guidance of application software designers and code developers, and improve the security capability of application software, the paper proposed a security system of enterprise application software development including technical requirements. The construction of enterprise application software development security system can help to reduce the software defects, prevent enterprise application software security vulnerabilities from being exploited by hackers, so as to avoid the possible serious or even catastrophic consequences.
  • 随着软件技术的发展及企业信息化的推进,企业内应用软件业务不断扩展,软件功能层出不穷,大幅度提高了企业的生产效率。同时,企业应用软件所面临的安全挑战也日益严峻,除了软件在设计开发过程中产生的自身程序缺陷外,外部黑客的攻击和破坏不断增加。企业应用软件安全漏洞一旦被利用,将导致严重甚至是灾难性的后果。因此,需要构建、完善应用软件开发安全体系,应对企业应用软件的安全问题。目前,应用软件开发安全体系不够全面,而且构筑的体系多针对特定平台。本文针对相关问题,为企业应用软件构建安全体系框架并在框架下提出安全技术要求,旨在从内容全面性、平台普适性两方面完善当前应用软件开发安全体系。

    Sajjad R[1]等人分析2002~2015年研发出的应用软件漏洞检测工具对于应用软件安全性防护的实际有效性,有些工具和检测机制延用至今都是主流技术,包括输入参数分析、漏洞扫描、静态分析、运行检查、入侵检测、Sec-SIP框架、SQL Injection Gen、Safer XSS等。在移动应用中也通过渗透测试技术[2]检测应用软件漏洞。通过漏洞检测技术可以梳理出用于面对恶意攻击的防范风险点,为制定有效防范人为攻击的安全技术要求提供框架基础。

    研究漏洞防御技术为防御恶意攻击提供了具体的安全技术要求。防火墙技术、访问控制技术、身份认证技术、数据加密技术、规则过滤技术、安全审计技术等提供了保障应用软件安全的措施。Mitropoulos D[3]等人针对41种防御技术的准确性、性能进行了分析,搭建试验模型,分析、判断出一些防御机制可以被攻击绕过的技术,帮助本文在安全技术要求选择上排除防御机制效果差的方法。

    GB/T 22239—2019《信息安全技术 网络安全等级保护基本要求》[4] 作为构建应用软件开发安全体系的主要依据,主要从技术要求和管理要求两方面对应用软件安全保障体系进行了规范。其中,技术要求包含物理环境、通信网络、区域边界、计算环境、管理中心,且通过计算环境提供了包括身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、数据完整性保密性、信息保护等安全要求,为应用软件开发安全体系中应用安全、数据安全的安全风险和安全防护手段提供参考。

    另外,标准中管理要求从制度管理、机构管理、人员管理、建设管理、运维管理进行约束。建设管理与运维管理包括软件开发管理、漏洞和风险管理、网络和系统安全管理、恶意代码防范管理等,提供了应用软件开发安全体系中过程管理安全的内容参考。

    GB/T 28452—2012《信息安全技术 应用软件系统通用安全技术要求》[5]明确了应用软件在设计与实现过程中的安全技术要求,从应用软件生存周期管理要求及应用软件系统安全技术要求两方面构建应用软件的安全框架,如图1所示。

    图  1  应用软件系统通用安全技术要求框架

    标准中的生存周期安全管理要求包括应用软件设计(开始阶段)、开发过程(获得或开发阶段)、测试(实现和评估阶段)、运行维护(运行和维护阶段)等阶段的管理要求,提供了过程管理安全的内容参考。

    系统安全技术要求包括安全功能技术要求(安全功能)及安全保证技术要求(安全保证),其中,安全功能提供了用户身份鉴别、抗抵赖、访问控制、安全审计、数据完整性保护、数据保密性保护、备份与恢复等技术要求。

    企业应用软件开发安全体系建立在专家学者对应用软件开发安全研究的基础上,同时参考国家标准中涉及应用软件安全功能设计及安全管理的要求,结合企业应用软件开发流程,按照开发生命周期过程,丰富体系内容。企业应用软件开发安全体系结构,如图2所示。

    图  2  企业应用软件开发安全体系

    对应用软件架构及其传输协议、服务端口、组件等的安全规范描述。(1)传输命令和数据所采用通信协议根据组件之间通信内容安全性程度选择不同安全性要求协议;(2)建立对于组件资源的访问控制机制;(3)不使用常见的不安全服务端口;(4)对组件内部的配置文件、用户数据进行加密存储。

    应用软件对外开放的接口进行应用范围、身份验证、访问控制等。(1)限制对外开放接口的应用范围;(2)对允许接入的系统进行唯一性标识;(3)对请求连接的系统进行身份验证;(4)采用校验技术对对外接口传输的数据进行合法性检验;(5)建立系统之间资源的访问控制机制;(6)限制同一时间内并发访问的接口数[6]

    对应用软件身份鉴别中的标识、口令、失败处理、二次鉴别等内容进行安全规范描述。(1)用户登录、后台管理系统登录应进行身份鉴别;(2)保证用户身份标识的唯一性;(3)提供一定的口令复杂度校验功能;(4)为用户创建独立且满足复杂度要求的初始口令,要求新建用户首次登录系统修改初始口令;(5)提供身份验证失败处理功能,连续登录失败应锁定账号;(6)认证失败后,应提供一般性的提示。

    同时,对于涉及重要业务或涉及企业重要数据的应用软件。(1)登录时采用2种或2种以上的鉴别技术对用户进行身份鉴别;(2)要求用户定期修改口令。

    应用软件具备业务、功能、数据的安全访问策略。(1)制定业务、功能、数据等对象的访问权限策略,遵循最小权限原则;(2)授权和用户角色数据存放在服务器端,鉴权处理应在服务器端完成。

    应用软件针对数据输入的校验和限制。(1)对所有用户产生的输入进行校验,提供数据格式和长度有效性校验功能;(2)使用服务端代码对输入数据进行最终校验;(3)上传文档前进行身份鉴别;(4)验证文件类型,仅允许上传满足业务需要的相关文件类型;(5)除验证文件类型扩展名外,还需至少检查文件报头中的类型信息;(6)访问上传的文件之前,进行恶意代码的扫描,校验文件完整性。

    应用软件对输出内容的过滤和检查。(1)不输出内部信息,不在出错消息中暴露包括函数名及调试信息等应用软件内部的敏感信息;(2)禁止返回与业务无关的信息;(3)涉及文件下载时不通过路径遍历方法下载敏感文件。

    (1)对敏感数据进行加密;(2)在服务器端加密存储敏感数据。

    (1)不在代码中存储敏感数据;(2)不在日志中记录明文的敏感数据;(3)保证业务重要数据和敏感数据在文件系统、数据库中存储的保密性;(4)保证业务重要数据和敏感数据在传输过程中的完整性及保密性。

    提供对新增数据进行备份的功能,并提供备份数据恢复的功能。

    (1)对应用软件系统重要事件提供安全审计机制;(2)严格限制对安全日志的访问;(3)安全日志设置有备份及清理机制。

    业务操作的不可抵赖性。(1)采用技术手段实现业务操作的不可抵赖性;(2)证据信息应存储在安全和信任的环境。

    (1)设定服务和资源的优先级;(2)提供服务或用户优先级设定功能,设定请求进程或访问账号的优先级,根据优先级分配系统资源;(3)对资源的访问设定时间限制、非法访问者检测和关闭的时间间隔。

    规定会话的存储、超时、清除、连接数等。(1)在用户登录后应创建新的会话,会话数据应存储在服务器端;(2)会话设置超时时间,当空闲时间超过设定时间服务端应自动终止会话;(3)当用户注销或退出客户端时,必须清除该用户的会话信息;(4)对最大并发会话连接数进行限制。

    (1)确保系统中的资源都有唯一标识符;(2)使用重要资源前进行初始化,初始化失败后安全退出程序;(3)及时释放系统资源;确保释放资源前完全清除敏感信息;(4)对分配的资源数量、使用权限、有效时间做限制,防止消耗过多资源;(5)执行迭代或循环时限制循环执行的次数。

    规范内存的分配、释放、缓冲区。(1)保持一致的内存管理原则,使用相同模式分配和释放内存;(2)对缓冲区的读写操作进行边界检查,避免向指定的缓冲区外读取或者写入数据;(3)字符串操作时,检查字符串长度和终止符,保证字符串的存储具有足够的空间容纳字符数据和终止符。

    (1)当访问数据库时,禁止使用默认的角色、账号与默认数据库口令访问数据库,数据库账号权限应遵循最小权限原则;(2)数据库连接字符串或密码应加密存储;(3)规定不同信任级别用户连接数据库的角色;(4)及时释放数据库资源。

    规范对文件操作进行身份识别、对目录进行安全限制、及时释放等。(1)采用最小权限原则进行文件访问授权;(2)禁止暴露目录或绝对文件路径;(3)禁止用户修改应用程序文件和资源,权限仅限于可读。

    应用软件采用安全通信协议对数据进行安全传输:WWW服务建议使用HTTPS协议;FTP服务建议使用SFTP协议;Telnet建议使用SSH协议;使用加密传输确保通信安全。应用软件对通信过程中的整个报文或会话过程加密;对信道中传输的消息进行完整性验证。

    (1)规范变量、函数命名及代码格式;(2)使用第三方代码,对代码安全性进行评估和测试;(3)对代码进行版本控制;(4)对代码的访问权限进行控制。

    (1)注释代码中无用的语句;(2)注释信息中不包含物理路径信息、数据库连接信息、SQL语句;(3)静态页面的注释信息禁止包含源代码信息;(4)动态页面使用隐藏注释。

    (1)确保全局变量、线程间的共享数据线程安全;(2)处于阻塞状态的任务和线程确保能够终止;(3)使用线程池来处理请求;(4)确保提交至线程池的任务可被中断;(5)及时释放线程专有对象。

    (1)代码应对函数入口参数的合法性和准确性进行检查;(2)避免在API或与外部交互的接口暴露仅限内部或部分用户访问的方法或函数[7]

    (1)异常出现返回一般性错误提示;(2)异常处理时及时回收并释放系统资源;(3)捕获异常应在日志中详细记录。

    (1)指针使用过程中确保指针的有效性;(2)指针使用过程中检查内存分配大小,避免产生溢出;(3)检查数组索引避免产生溢出;(4)循环中调用函数时检查缓存大小;(5)当方法结束清空所分配内存。

    (1)配置管理由授权人员进行,禁止使用远程配置管理,对操作进行审计;(2)服务器、框架、系统部件采用最新版本,安装更新补丁;(3)配置文件不得明文存储;(4)关闭服务器目录列表功能。

    (1)检查编译过程中依赖库的版本,检查编译命令的宏定义冲突;(2)编译生成的结果文件保存在独立于源代码的路径中。

    (1)不直接通过用户输入字符串构造可执行 SQL 语句;(2)使用参数化查询或参数绑定来构造SQL语句[8];(3)不在存储过程内使用字符串连接构造SQL语句,执行不可信的参数。

    (1)对输入的危险特殊字符数据进行过滤和转义;(2)对所有基于页面的输入进行验证,未经验证不对输入进行回显;(3)对于其他业务系统生成的未经本应用软件验证的表数据或文件数据, 输出到客户端前进行HTML编码[9]

    (1)应用软件对客户端提交的表单请求进行合法性校验;(2)对HTTP请求头Referer做验证。

    (1)从官方渠道获取第三方软件,所有组件及时升级到不存在已知高危漏洞的版本;(2)对第三方软件进行完整性验证测试,确保未被篡改;(3)定期对第三方软件进行安全性检测,避免使用已知存在高危漏洞的组件版本[10]

    (1)构建安全的编译环境,从官方渠道获取编译器,确保安装了所有补丁;(2)安全存储源代码,权限控制保护源代码不被非法用户访问;(3)确保开发环境与实际运行环境的物理隔离。

    (1)应用软件发布前删除所有与调试和测试相关的代码、配置、文件等;(2)及时删除服务器上不需要的应用程序和系统文档;(3)关闭服务器上不需要的服务;(4)软件运行服务器的系统组件避免使用存在已知漏洞的组件版本。

    (1)版本归档时,删除开发过程中的临时文件、备份文件、无用目录等;(2)归档的程序文件中不保留调试用的代码。

    通过本研究建立了一个比较完善的企业应用软件安全体系,满足应用软件设计、开发过程中的安全保障要求,能够为企业及员工信息提供安全屏障。随着黑客技术的发展,针对企业应用软件的攻击手段不断升级,今后需继续研究和完善企业应用软件安全体系,及时发现安全问题,提供安全手段。此外,企业中应用软件根据涉及的业务或所涉及数据的重要性的不同,参照安全要求也应有不同针对性,如涉及转账付款、支付收款业务逻辑的应用应重点关注未授权访问、越权访问;涉及用户命令执行、用户上传代码执行功能应关注命令注入;涉及短信、电话、邮件通知功能应关注应用软件设计逻辑错误。针对重要、特定的应用,就需要制定更严格的技术手段要求。

  • 图  1   应用软件系统通用安全技术要求框架

    图  2   企业应用软件开发安全体系

  • [1]

    Sajjad R, Mamoona H, Zartasha G, et al. Systematic Review of Web Application Security Vulnerabilities Detection Methods [J]. Journal of Computer and Communications, 2015, 3(9): 28-40. DOI: 10.4236/jcc.2015.39004

    [2] 王伟萌,刘承亮,朱韦桥,等. 企业移动互联网应用安全保障体系构建方案 [J]. 铁路计算机应用,2017,26(12):49-54. DOI: 10.3969/j.issn.1005-8451.2017.12.015
    [3]

    Mitropoulos D, Louridas P, Polychronakis M, et al. Defending Against Web Application Attacks: Approaches, IEEE transactions on dependable and secure computing [J]. transactions on dependable and secure computing, 2019, 16(2): 188-203.

    [4] 全国信息安全标注化委员会. 信息安全技术 网络安全等级保护基本要求: GB/T 22239—2019[S]. 北京: 中国标准出版社, 2019.
    [5] 全国信息安全标注化委员会. 信息安全技术应用软件系统通用安全技术要求: GB/T 28452—2012[S]. 北京: 中国标准出版社, 2012.
    [6] 李 尚. Web网站的安全问题及防护策略 [J]. 铁路计算机应用,2016,25(6):45-47. DOI: 10.3969/j.issn.1005-8451.2016.06.012
    [7] 张 昊,李 颖. 网络应用系统软件安全技术要求 [J]. 电子产品可靠性与环境测试,2020,38(2):76-79.
    [8] WEB安全漏洞深入分析及其安全编码[EB/OL]. [2017-10-26]. http://blog.nsfocus.net/web-vulnerability-analysis-coding-security/.
    [9]

    Ganga R, R. Satya P. Combating Cross-Site Scripting Assaults without Proprietary Software [J]. International Journal of Applied Engineering Research, 2017, 12(17): 6788-6796.

    [10] 高春霞,陈光伟,张文塔,等. 铁路网络与信息安全风险管理研究 [J]. 铁路计算机应用,2014,23(6):24-28. DOI: 10.3969/j.issn.1005-8451.2014.06.006
  • 期刊类型引用(5)

    1. 于建荣. 基于DevSecOps的铁路应用交付平台技术研究. 铁路计算机应用. 2025(02): 54-58 . 本站查看
    2. 王萌,程永红,刘志勇. 基于云平台的农机设计软件安全体系研究. 农机化研究. 2023(07): 228-231+255 . 百度学术
    3. 陈涵,苗羽中,刘绍杰,陈玉锋. 基于DevOps理念的铁路软件开发平台设计. 铁路计算机应用. 2023(04): 53-57 . 本站查看
    4. 张正普,王晓冬,郭奕聪. 铁路企业智能问询平台关键技术研究. 铁路计算机应用. 2022(03): 68-72 . 本站查看
    5. 郑羿. 信息安全下的计算机软件技术开发与使用探究. 内江科技. 2022(12): 82-84 . 百度学术

    其他类型引用(2)

图(2)
计量
  • 文章访问数:  184
  • HTML全文浏览量:  938
  • PDF下载量:  90
  • 被引次数: 7
出版历程
  • 收稿日期:  2020-06-09
  • 网络出版日期:  2021-03-01
  • 刊出日期:  2021-03-01

目录

/

返回文章
返回