构建安全应用程序架构必须考虑的十二问

  • 时间:
  • 浏览:1

记录事件:人们歌词 都前要检查是是否所有安全等级的重要事件都要能生成日志,如成功和失败的认证、数据访问、修改、网络访问等。日志应当蕴藏事件的时间、用户身份、机器名和位置等。要确认记录那此事件。

有后后,人们歌词 都需考虑如下要点:

特权提升和欺诈:在用户访问超过了其被允许访问的更多资源时,前一天在用户要能执行超过其被允许的更多活动时,就占据 了特权提升。要检查一下,前一天用户要通过操纵请求前一天通过直接访问未经授权的页面或资源,从而试图提升其特权,企业是是否都前要提供控制机制。

服务账户:服务账户是两种服务应用程序赖以运行的账户。应用程序所要求的服务账户在与数据库通信时,应当有一套受限制的特权集。

在进行架构检查时,人们歌词 都重点关注以下方面:应用程序架构的文档、部署和基础架构问题报告 、输入验证、认证、授权、配置管理、会话管理、加密、参数操纵、之类管理、审计和记录、应用程序框架和库。

密钥的生命周期策略:在一段时间后,密钥应当重新生成。长期使用同样的密钥是不安全的安全实践。

通过HTTP协议传输数据:在组件之间的通信,如在应用程序服务器和数据库服务器之间的通信都应当实施加密。

本文可作为架构师的安全设计指南,也都前要为渗透测试人员执行应用程序架构检查提供参考,二者都都前要将文中提及的依据和依据作为全局安全评估的一每项。



作者:赵长林

来源:51CTO

禁用明文协议:运行明文服务的端口应当关闭,有后后不应该用于应用程序的任何每项。

敏感数据:数据库连接字符串、加密密钥、管理员凭据或任何其它机密时会应当以明文形式存储。要检查配置文件是是否都前要防御非授权的访问。

在所有层中进行验证:作为两种最佳实践,人们歌词 都应当在所有层上实施验证,也如果在业务层、数据层等层面上实施验证。

存储、安全、分析:日志文件应当存放满有1个不同于应用程序正在运行的地方。日志文件应当克隆qq并移动到有1个永久性的存储器进行保留;前要保护日志文件,处里未经授权的访问、修改、删除等;前要定期地对日志文件进行分析。

应用所要求的组件:支持此应用程序的操作系统是那此?硬件需求是那此?

不健全的输入验证是是因为应用程序安全问题报告 的主要是因为之一。适当的输入验证助于处里跨站脚本攻击、SQL注入攻击等有些攻击。应对所有页面的每有1个输入字段(包括隐藏的表单字段)实施验证。最佳实践是利用两种集中化的依据。

支持和启用日志:前要检查是是否支持应用程序和平台的日志功能。

5.授权

端口和服务要求:应用程序有前一天前要与其它应用通信。要确认前要为该应用程序打开那此端口和服务。

集中化的依据:前一天企业使用定制依据来验证用户输入,就要检查是是否采用集中化的依据。

下面分别看一下那此方面:

如下要点前要引起重视:

ViewState中的敏感数据:之类,ASP.NET应用程序中的viewstate前一天包蕴藏些敏感数据,后者是用于在服务器上进行授权的根据。前一天不启用消息认证码语句,viewstate中的数据就容易被篡改。因而,人们歌词 都应检查是是否使用了消息认证码来保护viewstate中的数据。

为有效地实施认证,人们歌词 都前要考虑如下要点:

记录敏感数据:应用程序不应当蕴藏日志的敏感数据,如用户凭据、口令哈希、信用卡细节等。

服务器端的认证控制:要确保在服务器端验证凭据而时会在客户端。客户端的认证很容易被绕过去。

8.加密

加密密钥管理:要检查是是否占据 加密密钥的管理策略,也如果说,是是是否关于密钥的生成、采集、删除、消亡的策略。

认证cookie:要检查SSL是是否在整个应用程序中实施,有后后要检查任何页面的认证cookie是是否通过明文传送。

3.输入验证

关于加密,人们歌词 都应考虑如下要点:

下图展示的是在设计阶段前要处里的有些主要问题报告 。

强健的口令策略:企业的应用程序应当配置为只接受强口令。弱口令很容易遭受蛮力攻击。

4.认证

2.对部署和基础架构的考虑

关于会话管理,如下要点应引起重视:

验证来自客户端的所有输入:在客户端实施验证都前要减少服务器的负担,但仅依赖客户端的认证是两种不安全的实践。攻击者都前要利用代理工具绕过客户端的认证。因而,人们歌词 都应检查是是否也在服务器上实施了认证。

企业应处里不健全的配置。在配置文件中存储的任何敏感信息时会前一天被攻击者获得。

人们歌词 都应关注的第有1个问题报告 如果应用程序架构文档的实用性。每有1个应用程序都应当有相当于的可备查的架构图,其中要有对上述要点的深入解释,以及要能显示不同组件怎么才能 才能 安装和保障安全的网络连接图。

12.应用程序框架和库

授权决定了那此资源都前要被经认证的用户访问。不健全的授权控制前一天是因为特权提升攻击。企业应当考虑的要点如下:

人们歌词 都前要考虑如下要点:

上述要点基本代表了设计安全的应用程序应关注的问题报告 。在设计阶段实施那此要点都前要减少为保障应用程序安全而花费的总成本。前一天企业前一天部署了应用程序,没法,应用程序架构的安全检查就成为全面安全评估的有1个重要每项,并助于修复已有的漏洞和改善未来的应用程序设计。

使用架构的默认会话管理:定制的会话管理前一天占据 多种漏洞。要确保不使用定制的会话管理器,有后后使用应用程序框架的默认会话管理。

处里SQL注入问题报告 :输入验证助于在一定程度上减少SQL注入问题报告 。人们歌词 都应在后端利用参数化查询来检查应用程序是是否都前要应对SQL注入漏洞。

组件隔离:应用程序的不同组件应当相互隔离。之类,应用程序服务器和数据库服务器绝不应占据 同一台机器中。

6.配置管理

保障加密密钥的安全:加密密钥用于作为两种加密或解密数据的输入。前一天加密密钥遭到泄露,加密的数据就会遭到解密。

要检查应用程序赖以部署的基础架构,其中前一天包括检查网络、系统、基础架构的性能监视等。

安全强化:要确保应用程序所要求的所有组件时会最新的,有后后要安装最新的补丁。前一天前一天语句,要改变默认配置。

确保会话管理遵循如下最佳依据:会话ID应是随机的、长度足够长且保证唯一性;会话在登出后就失效;成功认证的会话ID和再次认证的会话ID应不同;会话 ID不应突然老出在URL中;在一段非活动时间前一天,会话应超时;会话ID前要在安全通道中传送;要检查cookie的属性(HttpOnly、 Secure、path、domain等)的安全性;

10.例外管理

长期cookie:人们歌词 都应处里将敏感数据以明文形式长期存放满cookie中。用户都前要看到和修改明文数据。要检查应用程序是是否将明文数据长期存放满cookie中。

框架的默认口令:有些应用程序框架前要有1个默认的口令。要确保将口令改成两种不易猜测的强口令。

1.应用程序架构的文档

要确保应用程序框架和库的最新,并保证对其部署了相关的补丁。要确认在框架中没法使用默认的口令。前要检查是是否使用了老的或易受攻击的框架。

使用GET协议传递敏感数据:GET协议在查询串中发送数据。通过GET发送的敏感信息都都前要通过浏览器历史或记录进行访问。

因而,在构建应用程序的架构时前要重视如下要点:

借助参数操纵攻击,攻击者都前要篡改从应用程序传输到Web服务器的数据。这会是因为对服务的非授权访问。

9.参数操纵

直接对象引用:要检查应用程序是是否会根据用户提供的输入而提供了对于对象的直接访问。前一天都前要语句,攻击者就都前要通过绕过授权而访问属于其它用户的资源。之类,下载有些用户的发票。

加密cookies:cookies蕴藏着由服务器授权给用户的数据。人们歌词 都前要保护之类数据以处里非授权的操纵攻击。

定制加密不靠谱:设计两种专用的加密机制有前一天是因为更脆弱的保护。企业应使用由平台提供的安全加密服务。企业应检查应用程序中所使用的加密类型。

认证是确认用户身份的活动。在应用程序中,验证是通过提供用户名和口令来实施的。不健全的认证机制前一天是因为绕过登录过程进而访问应用程序。这之时会带来重大损害。在设计应用程序时,应当实施强健的认证。

检查登录页是是否都前要通过HTTP协议传送。要检查在没法实施SSL证书的情况表下,应用程序是是否都前要通过任何其它的端口访问。

7.会话管理

绕过验证:人们歌词 前要检查用户输入是怎么才能 才能 被验证的。是是是否前一天绕过验证?要确认输入验证是是否依赖应用程序的框架。要检查框架中是是是否用户都前要绕过验证的任何漏洞。

日志文件蕴藏着事件的记录。那此事件前一天是一次成功的或失败的登录尝试,或是数据的恢复、修改、删除等,或是网络通信等的任何企图。人们歌词 都前要要能实时地监视日志。

禁用不安全的依据:人们歌词 前要验证应用程序只有接受GET和POST依据。TRACE、PUT、DELETE等其它依据都应当被禁用。

为保障存储数据的安全,或为保护在不安全的通道中数据传输的安全性,应用程序往往使用加密技术。

防火墙实施的限制:要检查防火墙为应用程序定义的策略,要检查防火墙允许哪类通信,阻止哪类通信。

认证的安全通道:程序在设计时,要确保通过加密通道来发送登录凭据。通过明文通道传送的凭据很容易被攻击者嗅探。

不安全的例外处里机制前一天暴露有价值的信息,攻击者都前要利用你是什么严重不足来调整其攻击。前一天没法例外管理,堆栈跟踪、框架细节、服务器细节、SQL查询、内内外部路径等敏感信息时会前一天遭到泄露。人们歌词 都前要检查是是否部署了集中化的例外管理,要确保例外管理机制显示尽前一天少的信息。

应用程序的架构检查是指检查应用程序架构中当前的安全控制。你是什么检查助于用户在早期确认潜在的安全漏洞,并在后后现在开始开发前一天就极大地减少漏洞。糟糕的采集有前一天暴露出应用程序的有些安全漏洞。最好的依据是在设计阶段就执行架构检查,前一天在部署后再实施安全控制将花费高昂的成本和代价。

会话是对用户活动的跟踪。强健的会话管理在应用程序的总体安全中扮演着有1个重要角色。会话中的漏洞前一天是因为严重的攻击。

验证用户输入的机制:要检查该应用是是否要能验证用户输入前一天要能处里所要求的输入。

人们歌词 前要考虑如下要点:

结语

11.审计和日志

未必依赖HTTP头:应用程序中的安全决策不应当是基于HTTP头的。前一天应用程序仅通过检查“referrer”头来为网页服务,攻击者就都前要通过改变代理服务器工具中的头部来绕过此控制。