首页 > 信息安全 > 正文

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

2016-01-25 13:37:58  来源: TechTarget中国

摘要:应用程序的架构检查是指检查应用程序架构中当前的安全控制。这种检查有助于用户在早期确认潜在的安全漏洞,并在开始开发之前就极大地减少漏洞。糟糕的架构设计有可能暴露出应用程序的许多安全漏洞。
关键词: 网络安全
 
  关于加密,我们应考虑如下要点:
 
  定制加密不靠谱:设计一种专用的加密机制有可能导致更脆弱的保护。企业应使用由平台提供的安全加密服务。企业应检查应用程序中所使用的加密类型。
 
  加密密钥管理:要检查是否存在加密密钥的管理策略,也就是说,是否有关于密钥的生成、分发、删除、消亡的策略。
 
  保障加密密钥的安全:加密密钥用于作为一种加密或解密数据的输入。如果加密密钥遭到泄露,加密的数据就会遭到解密。
 
  密钥的生命周期策略:在一段时间后,密钥应当重新生成。长期使用同样的密钥是不安全的安全实践。
 
  9.参数操纵
 
  借助参数操纵攻击,攻击者可以篡改从应用程序传输到Web服务器的数据。这会导致对服务的非授权访问。
 
  因此,我们需考虑如下要点:
 
  验证来自客户端的所有输入:在客户端实施验证可以减少服务器的负担,但仅依赖客户端的认证是一种不安全的实践。攻击者可以利用代理工具绕过客户端的认证。因而,我们应检查是否也在服务器上实施了认证。
 
  不要依赖HTTP头:应用程序中的安全决策不应当是基于HTTP头的。如果应用程序仅通过检查“referrer”头来为网页服务,攻击者就可以通过改变代理服务器工具中的头部来绕过此控制。
 
  加密cookies:cookies包含着由服务器授权给用户的数据。我们必须保护这类数据以防止非授权的操纵攻击。
 
  ViewState中的敏感数据:例如,ASP.NET应用程序中的viewstate可能包含一些敏感数据,后者是用于在服务器上进行授权的根据。如果不启用消息认证码的话,viewstate中的数据就容易被篡改。因而,我们应检查是否使用了消息认证码来保护viewstate中的数据。
 
  10.例外管理
 
  不安全的例外处理机制可能暴露有价值的信息,攻击者可以利用这个缺陷来调整其攻击。如果没有例外管理,堆栈跟踪、框架细节、服务器细节、SQL查询、内部路径等敏感信息都有可能遭到泄露。我们必须检查是否部署了集中化的例外管理,要确保例外管理机制显示尽可能少的信息。
 
  11.审计和日志
 
  日志文件包含着事件的记录。这些事件可能是一次成功的或失败的登录尝试,或是数据的恢复、修改、删除等,或是网络通信等的任何企图。我们必须能够实时地监视日志。
 
  因而,在构建应用程序的架构时必须重视如下要点:
 
  支持和启用日志:必须检查是否支持应用程序和平台的日志功能。
 
  记录事件:我们必须检查是否所有安全等级的重要事件都能够生成日志,如成功和失败的认证、数据访问、修改、网络访问等。日志应当包含事件的时间、用户身份、机器名和位置等。要确认记录哪些事件。
 
  记录敏感数据:应用程序不应当包含日志的敏感数据,如用户凭据、口令哈希、信用卡细节等。
 
  存储、安全、分析:日志文件应当存放在一个不同于应用程序正在运行的地方。日志文件应当复制并移动到一个永久性的存储器进行保留;必须保护日志文件,防止未经授权的访问、修改、删除等;必须定期地对日志文件进行分析。
 
  12.应用程序框架和库
 
  要确保应用程序框架和库的最新,并保证对其部署了相关的补丁。要确认在框架中没有使用默认的口令。还要检查是否使用了老的或易受攻击的框架。
 
  结语
 
  上述要点基本代表了设计安全的应用程序应关注的问题。在设计阶段实施这些要点可以减少为保障应用程序安全而花费的总成本。如果企业已经部署了应用程序,那么,应用程序架构的安全检查就成为全面安全评估的一个重要部分,并有助于修复已有的漏洞和改善未来的应用程序设计。

第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。