军事

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

2019-12-05 07:38:19来源:励志吧0次阅读

应用程序的架构检查是指检查应用程序架构中当前的安全控制。这种检查有助于用户在早期确认潜在的安全漏洞,并在开始开发之前就极大地减少漏洞。糟糕的架构设计有可能暴露出应用程序的许多安全漏洞。的办法是在设计阶段就执行架构检查,因为在部署后再实施安全控制将花费高昂的成本和代价。

本文可作为架构师的安全设计指南,也可以为渗透测试人员执行应用程序架构检查提供参考,二者都可以将文中提及的方法和措施作为全局安全评估的一部分。

下图展示的是在设计阶段必须解决的一些主要问题。

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

下面分别看一下这些方面:

1.应用程序架构的文档

我们应关注的个问题就是应用程序架构文档的实用性。每一个应用程序都应当有合适的可备查的架构图,其中要有对上述要点的深入解释,以及能够显示不同组件如何安装和保障安全的网络连接图。

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

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

我们要考虑如下要点:

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

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

端口和服务要求:应用程序有可能还要与其它应用通信。要确认需要为该应用程序打开哪些端口和服务。

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

禁用明文协议:运行明文服务的端口应当关闭,并且不应该用于应用程序的任何部分。

3.输入验证

不健全的输入验证是导致应用程序安全问题的主要原因之一。适当的输入验证有助于防止跨站脚本攻击、SQL注入攻击等许多攻击。应对所有页面的每一个输入字段(包括隐藏的表单字段)实施验证。实践是利用一种集中化的方法。

我们必须考虑如下要点:

验证用户输入的机制:要检查该应用是否能够验证用户输入或者能够处理所要求的输入。

绕过验证:我们要检查用户输入是如何被验证的。是否有可能绕过验证?要确认输入验证是否依赖应用程序的框架。要检查框架中是否有用户可以绕过验证的任何漏洞。

集中化的方法:如果企业使用定制方法来验证用户输入,就要检查是否采用集中化的方法。

在所有层中进行验证:作为一种实践,我们应当在所有层上实施验证,也就是在业务层、数据层等层面上实施验证。

解决SQL注入问题:输入验证有助于在一定程度上减少SQL注入问题。我们应在后端利用参数化查询来检查应用程序是否可以应对SQL注入漏洞。

4.认证

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

为有效地实施认证,我们必须考虑如下要点:

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

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

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

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

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

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

框架的默认口令:许多应用程序框架都有一个默认的口令。要确保将口令改成一种不易猜测的强口令。

小孩发烧怎么回事
心血管堵塞吃通心络能疏通吗
儿童止咳化痰
宝宝健脾助消化吃什么
分享到: