当前位置:主页>科 研>学术交流>

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

  5、授权

授权决定了哪些资源可以被经认证的用户访问。不健全的授权控制可能导致特权提升攻击。企业应当考虑的要点如下:

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

直接对象引用:要检查应用程序是否会根据用户提供的输入而提供了对于对象的直接访问。如果可以的话,攻击者就可以通过绕过授权而访问属于其它用户的资源。例如,下载其他用户的发票。

  6、配置管理

企业应避免不健全的配置。在配置文件中存储的任何敏感信息都有可能被攻击者获得。

如下要点必须引起重视:

安全强化:要确保应用程序所要求的所有组件都是最新的,而且要安装最新的补丁。如果可能的话,要改变默认配置。

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

长期cookie:我们应避免将敏感数据以明文形式长期存放在cookie中。用户可以看到和修改明文数据。要检查应用程序是否将明文数据长期存放在cookie中。

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

禁用不安全的方法:我们要验证应用程序只能接受GET和POST方法。TRACE、PUT、DELETE等其它方法都应当被禁用。

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

  7、会话管理

会话是对用户活动的跟踪。强健的会话管理在应用程序的总体安全中扮演着一个重要角色。会话中的漏洞可能导致严重的攻击。

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

使用架构的默认会话管理:定制的会话管理可能存在多种漏洞。要确保不使用定制的会话管理器,并且使用应用程序框架的默认会话管理。

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

  8、加密

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

关于加密,我们应考虑如下要点:

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

加密密钥管理:要检查是否存在加密密钥的管理策略,也就是说,是否有关于密钥的生成、分发、删除、消亡的策略。

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

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

  9、参数操纵

借助参数操纵攻击,攻击者可以篡改从应用程序传输到Web服务器的数据。这会导致对服务的非授权访问。

因此,我们需考虑如下要点:

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

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

加密cookies:cookies包含着由服务器授权给用户的数据。我们必须保护这类数据以防止非授权的操纵攻击。

ViewState中的敏感数据:例如,ASP.NET应用程序中的viewstate可能包含一些敏感数据,后者是用于在服务器上进行授权的根据。如果不启用消息认证码的话,viewstate中的数据就容易被篡改。因而,我们应检查是否使用了消息认证码来保护viewstate中的数据。

  10、例外管理

不安全的例外处理机制可能暴露有价值的信息,攻击者可以利用这个缺陷来调整其攻击。如果没有例外管理,堆栈跟踪、框架细节、服务器细节、SQL查询、内部路径等敏感信息都有可能遭到泄露。我们必须检查是否部署了集中化的例外管理,要确保例外管理机制显示尽可能少的信息。

  11、审计和日志

日志文件包含着事件的记录。这些事件可能是一次成功的或失败的登录尝试,或是数据的恢复、修改、删除等,或是网络通信等的任何企图。我们必须能够实时地监视日志。

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

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

记录事件:我们必须检查是否所有安全等级的重要事件都能够生成日志,如成功和失败的认证、数据访问、修改、网络访问等。日志应当包含事件的时间、用户身份、机器名和位置等。要确认记录哪些事件。

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

存储、安全、分析:日志文件应当存放在一个不同于应用程序正在运行的地方。日志文件应当复制并移动到一个永久性的存储器进行保留;必须保护日志文件,防止未经授权的访问、修改、删除等;必须定期地对日志文件进行分析。

  12、应用程序框架和库

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

  结语

上述要点基本代表了设计安全的应用程序应关注的问题。在设计阶段实施这些要点可以减少为保障应用程序安全而花费的总成本。如果企业已经部署了应用程序,那么,应用程序架构的安全检查就成为全面安全评估的一个重要部分,并有助于修复已有的漏洞和改善未来的应用程序设计。

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

我要用1T带宽DDoS你:这句话竟然拿到了10万

我要用1T带宽DDoS你:这句话竟然拿到了10万美

利用DDoS攻击威胁企业以勒索金钱,是一件太有利可图的事情,以致于一个网络犯罪团伙在...[详细]

这种密钥真得破不了:量子密码学研究新突破

这种密钥真得破不了:量子密码学研究新突破

通过同一个光子分流器输出端口的光子无法继续分离 剑桥大学和东芝欧洲研究分会的研究...[详细]

什么是SS7?黑客是如何滥用SS7的?

什么是SS7?黑客是如何滥用SS7的?

一谈及到网络安全问题,用户们总是觉得很头疼。除去要记住你的每一个账号以及对应的密...[详细]

针对物联网设备的攻击过程概述

针对物联网设备的攻击过程概述

分享到:据了解,Avast公司的安全研究人员入侵了一台Vizio智能电视,并成功获取到了目...[详细]

漏洞与补丁不是一回事 打上补丁也会有漏洞

漏洞与补丁不是一回事 打上补丁也会有漏洞

漏洞和补丁之间存在相互作用关系,它在任何大型机构的信息安全活动中都是必不可少的部...[详细]

返回首页 返回顶部