首页 > 信息安全 > 正文

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

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

摘要:应用程序的架构检查是指检查应用程序架构中当前的安全控制。这种检查有助于用户在早期确认潜在的安全漏洞,并在开始开发之前就极大地减少漏洞。糟糕的架构设计有可能暴露出应用程序的许多安全漏洞。
关键词: 网络安全
  应用程序的架构检查是指检查应用程序架构中当前的安全控制。这种检查有助于用户在早期确认潜在的安全漏洞,并在开始开发之前就极大地减少漏洞。糟糕的架构设计有可能暴露出应用程序的许多安全漏洞。最好的办法是在设计阶段就执行架构检查,因为在部署后再实施安全控制将花费高昂的成本和代价。
 构建安全应用程序架构必须考虑的十二问
  本文可作为架构师的安全设计指南,也可以为渗透测试人员执行应用程序架构检查提供参考,二者都可以将文中提及的方法和措施作为全局安全评估的一部分。
 
  下图展示的是在设计阶段必须解决的一些主要问题。
 
  在进行架构检查时,我们重点关注以下方面:应用程序架构的文档、部署和基础架构问题、输入验证、认证、授权、配置管理、会话管理、加密、参数操纵、例如管理、审计和记录、应用程序框架和库。
 
  下面分别看一下这些方面:
 
  1.应用程序架构的文档
 
  我们应关注的第一个问题就是应用程序架构文档的实用性。每一个应用程序都应当有合适的可备查的架构图,其中要有对上述要点的深入解释,以及能够显示不同组件如何安装和保障安全的网络连接图。
 
  2.对部署和基础架构的考虑
 
  要检查应用程序赖以部署的基础架构,其中可能包括检查网络、系统、基础架构的性能监视等。
 
  我们要考虑如下要点:
 
  应用所要求的组件:支持此应用程序的操作系统是什么?硬件需求是什么?
 
  防火墙实施的限制:要检查防火墙为应用程序定义的策略,要检查防火墙允许哪类通信,阻止哪类通信。
 
  端口和服务要求:应用程序有可能还要与其它应用通信。要确认需要为该应用程序打开哪些端口和服务。
 
  组件隔离:应用程序的不同组件应当相互隔离。例如,应用程序服务器和数据库服务器绝不应位于同一台机器中。
 
  禁用明文协议:运行明文服务的端口应当关闭,并且不应该用于应用程序的任何部分。
 
  3.输入验证
 
  不健全的输入验证是导致应用程序安全问题的主要原因之一。适当的输入验证有助于防止跨站脚本攻击、SQL注入攻击等许多攻击。应对所有页面的每一个输入字段(包括隐藏的表单字段)实施验证。最佳实践是利用一种集中化的方法。
 
  我们必须考虑如下要点:
 
  验证用户输入的机制:要检查该应用是否能够验证用户输入或者能够处理所要求的输入。
 
  绕过验证:我们要检查用户输入是如何被验证的。是否有可能绕过验证?要确认输入验证是否依赖应用程序的框架。要检查框架中是否有用户可以绕过验证的任何漏洞。
 
  集中化的方法:如果企业使用定制方法来验证用户输入,就要检查是否采用集中化的方法。
 
  在所有层中进行验证:作为一种最佳实践,我们应当在所有层上实施验证,也就是在业务层、数据层等层面上实施验证。
 
  解决SQL注入问题:输入验证有助于在一定程度上减少SQL注入问题。我们应在后端利用参数化查询来检查应用程序是否可以应对SQL注入漏洞。
 
  4.认证
 
  认证是确认用户身份的活动。在应用程序中,验证是通过提供用户名和口令来实施的。不健全的认证机制可能导致绕过登录过程进而访问应用程序。这可能会带来重大损害。在设计应用程序时,应当实施强健的认证。
 
  为有效地实施认证,我们必须考虑如下要点:
 
  服务器端的认证控制:要确保在服务器端验证凭据而不是在客户端。客户端的认证很容易被绕过去。
 
  认证的安全通道:程序在设计时,要确保通过加密通道来发送登录凭据。通过明文通道传送的凭据很容易被攻击者嗅探。
 
  检查登录页是否可以通过HTTP协议传送。要检查在没有实施SSL证书的情况下,应用程序是否可以通过任何其它的端口访问。
 
  强健的口令策略:企业的应用程序应当配置为只接受强口令。弱口令很容易遭受蛮力攻击。
 
  认证cookie:要检查SSL是否在整个应用程序中实施,并且要检查任何页面的认证cookie是否通过明文传送。
 
  服务账户:服务账户是一种服务应用程序赖以运行的账户。应用程序所要求的服务账户在与数据库通信时,应当有一套受限制的特权集。
 
  框架的默认口令:许多应用程序框架都有一个默认的口令。要确保将口令改成一种不易猜测的强口令。
第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli

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