聂成龙 石家庄铁道大学 河北省石家庄市

摘  要:系统架构必须满足一些质量属性,这些质量属性是对系统的基本要求,其中在六大质量属性中安全性是衡量系统向允许的用户提供夫服务的能力。在此简述了软件质量属性六大指标中的安全性,对于一些系统来说,攻击常有发生其中范围涉及较广,从电子转账盗取资金到修改敏感数据或让系统无法为合法用户提供服务。

关键词:安全性,网络攻击

Software architecture quality attribute-security

(NieChenglong, ShiJiaZhuang TieDao University,Shijiazhuang, Hebei province,050043)

Abstract:The system architecture must satisfy some quality attributes, which are the basic requirements of the system. Among the six quality attributes, security is a measure of the system's ability to provide husband service to the permitted users. In this paper, the security of the six attributes of software quality is briefly described. For some systems, attacks often occur in a wide range, stealing funds from electronic transfers to modifying sensitive data or making the system unavailable to legitimate users.

Key words

 

引言内容:在本学期开展的软件架构体系这门课中,学习了软件质量的六大属性,对安全性这方面进行深入,并运用到之后的软件编程当中。在当前各种软件的使用之中,软件的安全性至关重要。安全性战术可分为与抵抗攻击有关的战术、与检测攻击有关的战术以及从攻击中恢复有关的战术。给门装锁就是在抵抗攻击,在房子中放一个运动传感器就是在检测攻击,给房子上保险就是从攻击总恢复

1.如何判断安全性的判断

通常以安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力。试图突破安全防线的行为被称为攻击,它可以是未经授权试图访问数据或服务,或试图修改数据,也可能是试图使系统拒绝向合法用户提供服务,下面下面以淘宝购买场景来对性能进行简单分析

场景

一个通过身份验证的人试图从外部站点更改系统数据

刺激源

淘宝用户

刺激

试图从外部站点修改系统数据

制品

系统服务、系统中的数据

环境

在线连接有防火墙

响应

对用户身份进行验证,阻止其对数据的访问

响应度量

短时间内审核身份,拒绝其访问,并限制系统可用性

 

 

对于软件的正是流行阶段,很多方面都需要软件的使用,比如现在因为疫情的原因,很多学校延迟开学,对于所以一些软件就显得非常重要比如,钉钉,腾讯课堂,超星等。在日常的生活中,网上购物也是不可或缺的,比如淘宝,京东,苏宁等。这些都是针对海量的用户,在软件之中储存了海量用户的个人信息,在日常操作中并不会产生问题,但是存在一些黑客进行入侵盗取数据。因此为了保护客户的信息,必须增强软件的安全性。

2.常见的攻击

  1. XSS攻击

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

  2. CSRF攻击
CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

防范 CSRF 攻击可以遵循以下几种规则:

Get 请求不对数据进行修改

不让第三方网站访问到用户

阻止第三方网站请求接口

请求时附带验证信息,比如验证码或者

  3. SQL注入攻击

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入攻击属于数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。

SQL注入攻击会导致的数据库安全风险包括:刷库、拖库、撞库。

4.文件上传漏洞

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。 这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。

 

3.如何保证软件安全性


1.将安全性构建到软件的生命周期中:实用方法

软件的安全性需要需要人员、过程以及技术、方法。虽有很多工具和帮助软件的安全,但是若无恰当的过程和训练有素的人员来创建、测试软件程序,那么任何工具都不会真正有效。这个过程应当包括一个正式的软件开发周期及所公布的策略。此外,为所有的开发人员建立角色,并且指派检查和监管责任也是很重要的。安全和业务在软件开发周期的每一个阶段都应当得到表现,从而可以在每一个步骤处理风险管理。

2.需求

软件的设计者对于定义功能和业务需求非常熟悉,但是未必理解如何定义安全需求。此时,整个团队需要协同工作,决定哪些安全控制对最终的软件至关重要。

将安全性集成到需求阶段的步骤

1. 根据公司策略、合规和规章要求,讨论并定义安全需求。

2. 安全和审计团队应当评估业务需求和软件的功能,并且在测试和接受期间开始制定误用案例(误用情形)。其好处有两方面,一是提前清除或减少安全或违规问题,二是减少部署时间。

 

3.架构和设计

  由于已经定义了软件的架构和设计方案,下一步就需要评估安全问题。正是在这个阶段,成本高昂的、难以纠正的安全问题可以在其最易于解决的时间修复。为了防止损失惨重的错误,应当从性能和安全两个方面评估程序的架构。由于编制了详细的设计规范,因而可以向开发人员展示出应当包括哪些安全控制,以及应用程序的组件如何与完整的软件进行交互。

4.质量评价/测试

  用于测试应用程序的具体安全工具范围很广,其中有可以评估完整应用程序的独立解决方案和服务,更有完全集成的套件,这种套件可以提供测试和对从教育到实施等多个阶段的支持。集成的方案可以为那些对可重复的软件的安全周期表现成熟的公司提供多个阶段的支持。集成套件可以在进程中的多个时点上实施,并可为持续的改善提供尺度和反馈。

 

参考文献:

  1. 董柱,如何保证Web应用程序安全性
  2. 温昱,一线架构师实践指南