Security+笔记——第五章:实现主机和软件的安全性

课题A:实现主机和软件的安全性

加固
加固(Harding)是任何安全技术中的通用术语,这一过程会修改系统的默认配置来尝试关闭漏洞,从整体上保护系统不受攻击。通常来说实施加固是为了与明确安全策略中的安全要求保持一致。
操作系统的安全性
每种操作系统都有其独特的漏洞,为潜在的攻击者提供了利用机会。不同供应商开发的系统也有不同的缺陷,不同用途的系统也是如此。
操作系统的加固技巧

  • 与最低权限原则类似,确保操作系统符合最少功能原则,这表示系统不能提供超出其目的的范围之外的其他功能。
  • 通过系统基于主机的防火墙禁用任何不必要的网络端口。
  • 禁用运行在系统上的任何不必要的服务,减少它的攻击面。
  • 充分利用供应商或行业认可的组织所提供的任何安全配置来加强操作系统的防御能力。
  • 禁用系统上的任何默认账户,使攻击者无法通过这些账户获取访问权限。
  • 强制要求用户改掉分配给他们的默认密码
  • 执行补丁管理服务,以便能够更高效地管理所有软件和服务的自动更新和补丁。

可信计算基础
可信计算基础(trusted computing base/TCB)是指计算机系统中用于负责确保安全策略得到实施,系统安全性得到保障的硬件,固件和软件组成部分。这表示如果TCB内部出现缺陷,就可能危及整个系统的安全属性。
可信OS:满足TCB安全要求的操作系统通常是指可信操作系统(trusted operating systems/TOS)。
硬件和固件安全

组件描述
BIOS/UEFI基本输入/输出系统(BIOS)和统一可扩展固件接口(UEFI)都是固件接口,为操作系统启动初始化硬件。
信任根和HSM信任根(root of trust)是指通过使用能保持数据机密性和防止被篡改的加密机制,实施硬件平台的可信计算架构的技术。硬件安全模块(hardware security module/HSM)是一种能够提供信任根功能的物理设备。
TPM可信平台模块(Trusted Platform Module/TPM)是一种安全的加密处理器,用于生成加密密钥,在TCB的多个方面都有使用。
安全启动和远程认证安全启动(Secure boot)是一种UEFI功能,在启动操作过程中组织不想要的进行执行。UEFI采用启动加载程序的加密散列来确保其完整性。TPM为这个启动散列签一个报告,然后发送到第三方进行验证,这一过程就叫远程认证(remote attestation)。
FDE/SED基于硬件的全磁盘加密(full disk encryption/FDE)用在被称为自我加密驱动(self-encrypting drives/SED)的设备中,使存储设备能在硬件层面上进行加密,避免依赖软件解决方案。
EMI保护所有的电器都会产生电磁干扰(electromagnetic interference/EMI)未授权用户如果能接受这些电磁辐射,就可能获得其中的敏感数据。
EMP保护攻击者可以使用电磁脉冲(electromagnetic pulses/EMP)来破坏硬件,引起故障。一些TCP平台包括了针对电磁脉冲冲击的保护措施。

供应链安全:供应链(supply chain)是指供应,制造,分配最终向消费者发布商品和服务的端到端过程。
安全基线
正如你所见,安全基线是一组应用到组织中特定主机上的安全和配置设置。主机基线是可以与网络中其他主机进行比对的基准。
注意:基线还可以指特定时间点的系统状态快照。
软件更新

更新类型描述
补丁(Patch)补充代码的小单元,用于解决软件数据包或操作系统中的问题或功能缺陷。
热修复(Hotfix)紧急发布的补丁,用于解决特定的安全缺陷。
汇总(Rollup)以前发布的补丁与热修复集合,通常与应用在系统的一个组件上,如网络浏览器或一项特定服务。
服务部(Service pack)一种更大的系统更新汇编集合,可能包括功能的提高,新性能,通常还包括该服务包发布时已发布的所有补丁,更新和热修复。

应用程序黑名单与白名单
应用程序黑名单(Application blacklisting)是指组织那些被组织视为不想要的程序运行的时间,不论是出于安全问题还是其他任何原因。
相反的,在应用程序白名单(Application whitelisting)中,你可以维护一个允许应用程序列表,只有这些应用程序才能在目标系统上安装或运行。白名单是隐士拒绝的优秀例子。
黑白名都有各自的优缺点:

  • 黑名单确实能够让你组织特定应用程序在系统上运行。缺点是它只能组织被确定为不想要的应用程序,因此新的或位置的应用程序可能会被赋予访问权限,几时它们存在安全风险。
  • 白名单比黑名单提供了一种更加彻底的解决方案,尤其在可能包含漏洞的新的或未知的应用程序方面,但是创建并维护白名单所需的管理开销可能会被禁止。

日志
日志(logging)是指使用操作系统或应用程序记录计算机活动的数据。最终的日志文件会已知位置以文本文件的形式存储。
审计
计算机安全审计(security auditing)是指对系统安全性中的优缺点执行有序技术评估的过程,确保系统符合要求。虽然和安全评估类似,但是安全审计通常将重点放在确定系统是否满足一系列的标准。
防恶意软件
防恶意软件(Anti-malware software)是在指扫描独立计算机和整个企业网络,查找已知病毒,木马,蠕虫以及其他恶意程序的保护性软件。
防恶意软件类型

类型描述
防病毒(Antivirus)这种应用程序会扫描文件,查找与特定模式匹配的可执行代码,这种模式通常被认为是病毒,这种被称为基于签名的防病毒软件。监控系统与病毒有关的活动,如访问启动扇区,这种积极的监控能力被称为基于行为或启发式的防病毒软件。
防垃圾邮件(Anti-spam)垃圾邮件检测可能包含一个防垃圾邮件过滤的陈谷,可以检测垃圾消息中常用的特单词。
防间谍软件(Anti-spyware)这种软件专门用于保护系统不受间谍软件的攻击。
弹出窗口阻止程序(Pop-up blocker)弹出窗口阻止程序会阻止来自位置或不受信任站点的弹出窗口。
基于主机的防火墙(Host-based firewall)这种软件被安装在单个系统中,专门用于防止网络攻击。

除了上述工具还有:

  • 端点保护(Endpoint protection)软件,与防恶意软件扫描器相结合组成一个更大的安全控制套件,包括从中央服务器扫描网络主机的健康状况。
  • 恶意软件沙盒(Malware sandboxing)软件,将恶意软件放在一个虚拟环境中,可以在不破坏生产系统或网络其余部分的前提下安全的对其进行分析。
  • 逆向工程(Reverse engineering)软件,尝试将恶意软件解构成它的基础组件,以便能更容易地理解其属性。

数据执行保护(Data Execution Prevention/DEP)是一种CPU和Windows功能,能够防止内存中的恶意代码执行。
硬件外围设备的安全

外围设备安全考虑
无线键盘和鼠标一些无线接收器容易受到劫持。
显示如果监控器和其他显示设备是独立联网的,那么他们可能容易受到劫持。如智能电视。
外部存储设备外部存储设备尤其是USB拇指驱动器有时可能会被用作攻击矢量。
打印机和多功能设备(MFD)打印机和多功能设备,就是将打印机和扫描附件等其他功能结合起来的设备,通常会通过无线网络连接。
摄像头和麦克风数码相机网络摄像头和买客房都可能称为被窃听的多媒体外接设备。

嵌入式系统
嵌入式系统(Embedded system)是指大型系统各种拥有特定功能的计算机硬件和软件系统。
嵌入式系统的安全意义

系统安全意义
ICS/SCADA工业控制系统(Industrial control systems/ICSs)是一种控制关键基础设施的网络系统,如水电运输和通讯服务。ICS中最重要的类型就是监控和数据采集(supervisory control and data acquisition/SCADA)系统。SCADA系统向嵌入式系统发送或接受远程控制信号。许多SCADA系统不会考虑安全性。
微型控制器一些嵌入式系统会将CPU内存模块和外围设备合并为一个组件。这种组件被称为微型控制器(microcontroller)或系统及芯片(system on chip/SoC)。
RTOS实时操作系统(real-time operating system/RTOS)是一种专用操作系统。在一般用途的操作系统中,系统使用调度器来为每个运行进程或用户平衡处理器时间。这使得任务的完成时间会随着一些因素的变化而变化。
智能设备智能设备(smart device)是一种能够联网并有一些自主计算属性的电子设备,包括但不限于典型的计算机。如只能手表。
IoT与只能设备相关的一个概念就是物联网(Internet of Things)只带任何非传统计算机对象,他们通过使用嵌入式电子组件连接到更加广泛的胡两位中。
摄像系统传统闭路电视(CCTV)摄像头在有限的区域内提供了联网监控。但是更多现代相机被嵌入了支持互联网协议(IP)的系统,使之能通过使用常用计算机网络系统和软件进行远程管理。
特殊用途的系统特殊用途的系统包括医疗设备,ATM,摩托车,飞机,无人驾驶飞机等等。

保护主机的准则

  • 实施跟进操作系统供应商的安全信息。
  • 在你的操作系统中应用安全设置,如禁用不必要的服务,对用户的账户遵守最低权限的原则。
  • 为你的系统创建安全基线,提高加固过程的效率。
  • 将这些基线与当前主机配置进行对比。
  • 考虑实施应用程序黑名单和白名单来限制允许在系统中执行的软件。
  • 确保系统中的所有关键活动都被记录下来。
  • 审核日志,确定可疑行为。
  • 准备第三方审计,验证你的主机是否符合要求。
  • 在你的主机中实施防恶意软件方案。
  • 考虑不同硬件外围设备的特殊安全意义。
  • 考虑嵌入式系统的特殊安全意义。

课题B:实现云和虚拟化的安全性

虚拟化
虚拟化(Virtualization)过程是指创建计算环境的模拟。虚拟化系统能够模拟典型计算机的硬件,操作系统和应用程序,但它不是一台真正的物理计算机。
超级管理器
超级管理器(hypervisor)是将虚拟软件与其运行的物理硬件分离开来的软件曾。超级管理器管理物理主机中的资源,并将它们提供给多个虚拟环境。
应用程序容器(Application container)或应用程序单元(Application cell)是一种虚拟化方式,表示应用程序在主机操作系统的独立容器中运行。
虚拟桌面基础架构
虚拟桌面基础架构(Virtual desktop infrastructure/VDI)使用虚拟化将个人计算环境与用户的物理机分离开来。在VDI中桌面操作系统和应用程序在虚拟机内运行,这些虚拟机被托管在虚拟化基础架构中的服务器上。运行桌面操作系统的虚拟机被称为虚拟桌面环境(virtual desktop environment/VDE)。
虚拟化的安全性

安全问题描述
补丁管理补丁管理系统应当部署到位,以确保安装了所有相关补丁。这对那些针对虚拟化软件本身发布的任何补丁来说尤为重要。
最小权限在为任何虚拟环境确定访问控制分配时,必须应用最小权限的概念。必须顶起监控对所有环境的访问行为,防止未授权访问。
日志虚拟环境中的用户和系统活动应当进行记录并审核,检查不寻常的活动和任何可能的安全泄露。
联网虚拟联网设备的安全能力可能不会完全和物理设备一样。如特定模式下的虚拟交换机在肯能无法将虚拟基础架构中的主机和客户机之间或客户机与客户机之间的流量分离开来。
快照持续不断地捕捉快照(snapshot)或特定时间点上的虚拟环境状态,就能在虚拟环境被破坏或性能降低时提供一种快速简便的方法恢复整个环境。
避免VM蔓延虚拟机蔓延(VM sprawl)发生在虚拟机数量超出组织的控制或管理能力之时。如果你正在处理虚拟机蔓延,受影响的VM可能会被轻易忽略。避免虚拟机蔓延的最佳方式之一就是使用虚拟机生命周期管理(VM lifecycle management/VMLM)方案。VMLM方案为你提供了一个能够维护和监控组织中所有虚拟机的中央控制面板。
VM逃逸保护虚拟机逃逸(VM escape)发生在攻击者在虚拟机上执行代码,允许运行在虚拟机上的应用程序脱离虚拟环境并直接与超级管理器互动时。攻击者可能可以访问最底层的主机操作系统,因此也能访问运行在主机上的所有其他虚拟机。防止虚拟机逃逸的最佳方式就是确保你的虚拟软件保持最新。你还可以尝试限制主机和客户机之间的资源共享功能。

云计算
云计算(Cloud computing)是一种计算方式,其中包含了通过大型分布式网络进行的实时通讯,以便为用户,企业或组织提供资源,软件,数据,和媒体需求。这种计算方式通常需要依赖互联网来提供计算能力,这是单个机器做不到的。
云部署模型

部署描述
私有私有云服务通常由单个公司或其他商业实体通过私有网络发布。这种托管可能在内部 进行,或在异地进行,使用私有云计算,组织能更好地控制服务的私密性和安全性。这种交付方式更多的针对在运营中需要严格访问控制的银行和政府服务。
公共公共云是由向普通客户提供该服务的组织通过互联网进行部署的。在这种模型下,企业能够提供按订阅或按需付费的融资方式,同事还能提供免费的低层次服务。由于公共云计算依赖互联网,安全一直都是一个问题。
社区当多个组织共享云服务的所有权时,将以社群云的方式部署。这通常是为了集中资源以便用于共同关心的问题,如标准化和安全策略。
混合混合云计算在一个是体重结合了两种或多种部署方式。这种方法的好处就是组织不仅能够依赖内部云服务进行业务操作,还能向公众提供计算服务。

云服务的类型

服务描述
软件软件即服务(Software as a Service/SaaS)是指使用云向用户提供应用程序。这种服务无需用户在他们的计算机上安装软件,也不需要组织购买和维护软件版本。这样的例子包括 office365
平台平台即服务(Platform as a Service/PaaS)是指云向客户提供虚拟系统,如操作系统。这样的例子包括Oracle数据库
基础设施基础设施即服务(Infrastructure as a Service/Iaas)是指使用云提供客户端所需的任意或所有基础设施访问。这包括数据中心,服务器,或任何所需的联网设备。Iaas能保障客户端的服务质量(QoS)。这样的例子包括Amazon Elastic Compute Cloud。
安全安全即服务(Security as a Service/SECaas)使客户能够利用云供应商在计算机安全的特定区域内提供的信息,服务,软件,基础设施和流程。这包括认证机制,防恶意软件方案,入侵检测系统以及更多。这样的例子有Cloudflare。

保护虚拟和基于云的资源的准则

  • 考虑在你的组织中使用虚拟化,实现更简单高效的资源管理。
  • 认识不同虚拟化类型之间的区别并确定哪种最符合你的要求
  • 确保VM软件以及主机和客户机的操作系统都定期的打补丁。
  • 对访问虚拟机执行最小权限原则。
  • 确保虚拟机记录关键事件的日志。
  • 配置虚拟联网设备,以支持必要的隔离通讯。
  • 记录最佳虚拟机状态的快照。
  • 结合使用虚拟机生命周期管理方案。
  • 熟悉不同的云部署模型和服务类型。
  • 考虑利用SECaas将一些安全操作转移给第三方供应商。

课题C:实现移动设备的安全性

移动设备的连接方式

连接方式描述
蜂窝蜂窝网络(cellular network)使移动设备能连接到世界各地固定位置上的无线收发器。这些无线收发器的覆盖区域被称为小区(cell)。
Wi-Fi移动设备可以连接到Wi-Fi网络进行无线局域网连接。安全的WiFi网络结合认证和加密服务来确保数据传输不会被攻击者轻易拦截或破译。
蓝牙蓝牙是一种主要用于增强移动设备之间短距离无线通讯的无线技术。
NFC近场通讯(NFC)是指只能手机和平板电脑等移动设备在非常近的距离内进行的通讯标准。
红外线红外传输(Infrated transmission)是无线传输的一种形式,其中信号以红外光脉冲的形式被发送。
SATCOM专用移动设备还能使用卫星通讯(satellite communications/SATCOM)来发送和接受来自轨道卫星的无线电信号。这些卫星能将需要实现的信号转发到全球不同的位置上。
ANTANT是一种高专有无线网络技术,与消耗较少能量的蓝牙技术类似。主要用于传感器之间的通讯,如心率检测器。
USB移动设备可以通过USB物理连接到计算机或其他移动设备上。

移动设备的管理
移动设备管理(Mobile device management/MDM)是指跟踪,控制,保护组织移动基础架构的过程。
移动设备的安全控制

安全控制描述
屏幕锁定所有移动设备上的屏幕锁定选项应当被启用,对设备什么时候会被锁定做出严格要求。一旦设备被锁定,只有输入用户设置的代码才能访问。
强密码和PIN码当设备打开是,用户应当设置强密码和PIN码来访问设备。
全设备加密如果可能的话,所有的移动设备应当配置使用数据加密来保护存储在设备上的公司转悠数据及其访问
远程擦除/锁定远程擦除(remote wipe)是一种用于从移动设备中删除敏感数据,并在不实际拥有该设备时永久删除其中数据的方法。远程锁定(remote lockout)是一种刚在不从内存中删除该设备中敏感数据的前提下限制其访问的方法。但是技术高超的攻击者可能可以绕过锁定获取到敏感数据,尤其是在未加密的情况下。
地理定位和地理围栏GPS跟踪服务功能,或地理定位在许多移动设备中都可用,在大多数处于商业原因需要的情形下可以进行添加。地理围栏(Geofencing)是一种根据现实世界的地理位置创建虚拟边界的时间。组织可以使用工地里围栏在他的办公区周围创建便捷,然后对超出此边界的任何设备限制其中的功能。
访问控制移动设备应当对访问的人员和内容尽心管理。当员工使用移动设备时实施认证和授权机制就能维持最低权限原则。
应用程序和内容管理对用户可以访问的应用隔阂内容进行限制可以防止员工无意间使用它们移动设备上的不安全软件。
资产跟踪和清单控制持续跟踪提供给用户的移动设备对监理组织必须遵守的特定安全标准至关重要。
推送通知服务推送通知是一种由中央服务器向多个客户端发送的通讯。
限制可移动存储功能由于像SD卡这样的可移动存储设备进一步分离了用户和设备的信息,因此,你的员工需要谨慎行事。你应当强制要求易丢失的经常共享的可移动存储组件中不能包含敏感数据,尤其是明文形式的数据。
存储分区移动设备的普及与云存储技术的兴起密切相关,因此你需要做好准备,以便能够对管理组织中数据存储的最佳方式作出评估。
容器化移动设备可以使用虚拟容器来将敏感应用程序和存储与设备中的其他应用程序和存储分离开来。
禁用不适用的功能每种功能都可能成为移动系统中的潜在漏洞,因此最好禁用组织中任何不必要的功能。

移动设备的监控和执行

活动安全考虑
来自第三方商店的应用安装由于移动操作系统的第三方商店不必进行与官方商店相同程度的审查,此类应用的安全性可能很难验证。
应用侧面加载侧面加载(Sideloading)是指在移动设备上直接安装应用数据包的做法,而不必通过应用商店下载。
rooting/越狱对Android设备来说,rooting是指启用设备上跟权限的过程,这些权限在默认情况下是禁用的。IOS设备中一个类似的概念叫做越狱(jailreaking),他消除了设备上的软件限制,允许用户运行未从官方应用商店中下载的应用。
自定义固件配置当取得Android设备的根权限时,就可能配置其中的自定义固件。
固件OTA更新为了运行一直且最新的固件,你的移动设备管理系统可能可以对设备实施空中下载(OTA)的更新
运营商解锁一些设备尤其是iPhone可能会将用户锁定为特定移动运营商的用户。
摄像头和麦克风的使用移动设备尤其是电话既小巧又强大,他们可能包含用于录制视频和音频的高清摄像头和麦克风。但这也意味着这些设备能轻易的用来窃听和侦查办公大楼等室内环境。
地理标记当设备捕捉视频和音频时,他们可能会使用元数据标记该媒体,如果被捕捉的媒体比较敏感,那么被记录对象的位置也是敏感的,就可能向未授权用户泄露敏感信息。
外部媒介的使用你应当限制像SD卡这样的外部媒介在移动设备中的使用。
SMS/MMS的使用员工可能会使用它们的设备发送并接受文本和媒体消息,这可能会导致有意或者无意的数据泄露风险。
WIFI直连的使用无线直连(WIFI direct)可让两个设备在没有无线访问点的情况下互相连接,缺少集中式的架构可能会导致难以监控无线通讯的恶意流量。
数据共享数据共享(Tethering)是指与多个设备共享无线胡两位连接的过程。
支付方式的使用有几种不同的应用可以提供移动设备的支付服务。

移动部署模型

部署模型描述
企业拥有在这种部署模型中,用于工作相关目的的所有移动设备的唯一所有者是组织。同样组织全权负责所述设备的维护和管理。
BYOD自带设备(bring your own device/BYOD)模型将控制权和所有权从组织转移到个人员工。如果员工选择自带设备他们叫对使用自己的个人设备进行工作负责。
CYOD选择你自己的设备(choose your own device/CYOD)模型与BYOD类似,员工对他们的设备负有实质性的责任,甚至可被视为设备的所有者。
COPE企业拥有个人启用(corporate-owned,personally enabled/COPE)模型让组织选择他们希望员工使用的设备,同时仍允许员工拥有是被设备进行个人活动的一些自由。
VMI正如VDI组织可以为员工创建一个虚拟移动基础架构(virtual mobile infrastructure/VMI)来使用他们的移动设备。

BYOD安全控制

安全控制描述
策略为满足BYOD实现应该做的第一件事就是起草一份有关组织中BYOD处理方式的企业策略。
所有权归属虽然员工的个人设备是他们的私有财产,但是当设计公司数据时所有权之间的界限就会变得模糊,你需要制定清晰的界限,明确定义员工所有和组织所有的内容。
补丁管理和防恶意软件根据操作系统及其软件,一些移动设备可以容易的进行修补。但其他一些可能很难打的补丁使他们变得非常脆弱。可以考虑应用搞不定管理系统来缓解过时软硬件带来的威胁。
考虑架构和基础设施的需求随着越来越多的设备被添加到你的企业网络中,你可能需要扩展并更新基础设施,否则当前的办公设置可能不足以服务数量众多的移动设备。
取证随着BYOD变得越来越普遍,他们与你进行的安全调研的相关性额变得越来越高。你的取证程序和工具知识必须是最新的,而不仅仅是一套有限的规范标准。
隐私支持员工可能会担心他们的隐私处于被暴露在企业网络中的风险下,尤其是网络可以被许多人共享的情况下。

实现移动设备安全性的准则

  • 了解移动设备可能在组织中使用的不同连接方式。
  • 了解你对特定连接方式应用的不同控制等级。
  • 在你的组织中纳入移动设备管理平台,
  • 在移动设备上实施安全控制,如屏幕锁定,地理定位,远程擦除,设备加密等更多。
  • 监控与移动设备有关的特定活动,如来自第三方的应用安装,获得根权限/越狱,运营商解锁等更多

课题D:在软件开发生命周期中考虑安全性

软件开发生命周期
应用程序开发在程序有一个生命周期:从应用部署之前的厨师规划阶段,直至其果实。软件开发生命周期(software development lifecycle/SDLC)是指在整个生命周期中设计和部署软件的实践。
软件开发模型

  • 在瀑布模型(waterfall model)中SDLC是串联的,每个阶段只有在前一个阶段中确定的所有任务完成后才能开始。瀑布模式中主要有五个阶段:发起/起草要求,设计,实施。验证/测试,维护/处理。这些阶段按顺序执行且不重叠。瀑布模型师最适合那些时间不是重要限制的项目。
  • 敏捷模型(agile model)侧重于不同阶段的适应性措施一如需求一以便开发团队能更容易地写作并对变更做出相应。敏捷模式逐步地分解任务,使之不存在长期计算,但只要剪短的迭代,开发人员就能更容易的修改并适应不断变化的需求。敏捷模式在那些需求和设计难以预测的复杂,不稳定的项目中特别有用。
    DevOps

DevOps是软件开发和系统操作的结合,代表了一个准则与另一个相互整合的做法。这种结合是为了提高计算环境中创建和部署应用程序的速度和可靠性。
不可变系统:DevOps方法还有助于使用不可变系统(immutable system),这些系统不是就地升级,而是以编程方式销毁,然后在每次配置更改时从头开始重新创建。
供应和撤销供应:DevOps部署的主要流程包括资源的供应和撤销供应。
版本控制
版本控制(Versioning)是确保构成项目的资产在进行更改时能够得到密切管理的做法。
版本控制是更替变更管理流程的一个组成部分。
保护代码的技巧

技巧描述
合理的输入验证输入验证包括限制用户输入到特定字段中的内容,例如不允许在用户名字段中输入特殊字符。
合理的错误处理合理的错误处理能减少将有关代码的数据暴露给未经授权用户的风险。
加密加密对于存储和传输敏感数据的应用程序至关重要。
代码签名代码签名(Code signing)是一种数字签名形式,可确保你的源代码和应用程序二进制文件是真实的且未被篡改。
模糊模糊(Obfuscation)是一种能从根本上隐藏或伪装代码的技术,以防止未经授权的用户阅读。
代码重用几乎所有的代码都是在现有框架上构建的。如果已有可靠的代码被是被并通过验证,你也有权使用它,那么可以考虑利用项目中的现有代码。
限制死代码死代码是指成功执行,但其结果实际上未在软件中使用的任何代码。
服务器端和客户端在客户端-服务器体系结构中,软件的执行和输入验证可以发生在交易的任何一方。处于安全考虑服务端发生的进程更容易控制,因此验证输入通常发生在此处,应当与用户隔离的任何执行过程也一样。
限制数据暴露与错误处理一样,你应该限制向用户暴露的应用数据数量。
内存管理你已经了解缓冲区溢出等内存漏洞如何威胁应用程序的安全性。
存储程序存储程序(Stored procedure)是一组预编译的数据库语句,可用于验证数据库的输入。他们通过限制用户可以成功提交的语句的种类和格式来实现这一功能。

编译代码(Compiled code)是指从高级编程语言源代码转换为可由系统直接执行的低级代码。
运行时代码(Runtime code)是指由中间的运行环境解释的源代码,这些代码由这些环境运行,而不是系统直接执行。
代码测试方法

测试方法描述
静态代码分析静态代码分析(Static code analysis)是在源代码处于静态时查看源代码的过程,也就是说它不执行。
动态代码分析动态代码分析是在执行代码时审查代码的过程。这有助于揭示静态代码分析可能会漏掉的问题,因为某些问题在程序运行时或接受难以预测的用户输入时可以更容易被识别。动态分析过程的一个具体例子是模糊处理(fuzzing),其中更包括向正在运行的应用程序发送随机和不寻常的输入,以评估应用程序如何响应。
压力测试压力测试(Stress testing)用于评估软件在极端负荷的性能。压力测试的主要目的是确定应用程序在面对高资源消耗时可能遭受的DOS状况。
沙盒沙盒不仅可用于恶意软件分析,软件测试人员使用沙盒来为应用程序配置特定的操作环境,同时将此环境与网络其余部分隔离。这为测试人员提供了不同环境下的测试结果。
模型验证模型验证(Model vertification)是评估软件项目如何满足开发早起定义的规范的过程。验证项目的开发模式能帮助组织确定最终产品是否满足了项目设计的所有利益相关者的需求

将安全性纳入软件开发生命周期的准则

  • 将安全性集成到软件开发生命周期的每个阶段。
  • 选择最适合你的安全和业务需求的软件开发模型。
  • 考虑采用DevOps文化,以便将软件开发与系统操作集成在一起。
  • 在DevOps文化中利用软件自动化和基础架构即代码。
  • 在开发过程中加入一个版本控制系统,以便更好的管理项目变更。
添加新评论