Web应用安全保障“六要素”(一)

  Web应用程序比客户端应用程序更难保证安全性,因为它不像web服务器有四五个主要供应商的web服务器,它有大量的web应用程序和自定义脚本数量,而且每个都可能包含潜在的漏洞。对于开发人员来说,确保应用程序安全的最佳方法是使用建议的安全措施和可以扫描代码的软件,并提醒用户潜在的安全问题。管理员需要定期扫描其Web站点中的漏洞。

  应用程序的安全性主要是由应用程序的开发者控制的。管理员可以紧固一些应用程序的安全性,但是如果应用程序本身不安全,便不可能确保其安全。

  编写安全的应用程序是困难的,因为应用程序的各个方面,如图形用户界面,网络连接,操作系统交互,和敏感数据的管理,需要大量的安全知识以确保其安全。大多数程序员不具备这方面的知识或不考虑用应用程序安全的重要性来衡量额外工作。

  但从管理者的角度来看,有一些安全问题要谨记在心:

  运行权限权限

  应用程序管理

  应用程序更新

  与操作系统集成的安全性

  远程管理安全

  会话安全

  要素一:运行权限管理

  管理员应该尽可能设置应用程序的低权限性。这样做可以防止多种电脑威胁:

  如果应用程序被攻击者利用,他们将拥有应用程序的特权。如果该权限是足够低的,攻击者将不能进一步的攻击。

  低权限保护计算机免受嵌入式木马(在应用程序中),因为处理木马时拥有较少的权限。

  当应用程序具有较低的权限,用户将无法保存敏感据区域的数据(如操作系统领域),甚至不能进入核心资源。

  在开发应用程序时,为了节省开发时间,程序员往往做出臆断。其中的一些假设,需要管理权限才能访问。这虽然削减了编程时间,但它降低了管理员保护系统安全的能力。当普通用户被授予管理权限,可以删除或访问周围的配置,威胁安全。

  当安装程序时,因为安装程序可能需要访问敏感的操作系统目录,它通常需要有更高的权限,甚至管理权限。最好是先在一个相似配置的测试计算机上安装应用程序。这样,安装在正式计算机之前,你可以看到是否有问题。如果应用程序并无明显原因需要管理员权限,或者你不信任该应用程序,可以在沙盒中运行它。沙盒是一个安全应用程序,它可以拦截正在运行的应用程序的系统调用,确保应用程序将只能访问管理员允许的资源。沙盒可以限制访问注册表,操作系统数据的目录和网络。将应用程序与敏感OS区域以及其它用户定义的敏感数据域隔离开来。

  要素二:应用程序管理

  大多数应用程序提供了一些接口进行管理(主要用于应用程序配置),且每次施用方法会产生须解决的安全风险,如这些:

  INI/ conf文件

  GUI

  基于Web的控制

  管理的一个应用程序的最基本的方法是通过基于文本的文件来控制它。为了保护这样的应用程序,管理员需要限制访问权限。如果文件存储在本地,可以通过内置的OS权限管理系统;如果文件存储在其他地方,可以通过使用身份验证登录到远程存储位置(确保认证方法受保护)。

  大多数应用程序有一个图形用户界面用于管理它们。除了在提供GUI级别的安全性,管理员应该对图形用户界面和应用程序之间的通信提供安全保障。

  当GUI和应用程序的物理位置在同一台计算机时,管理员应该给GUI尽可能少的权限(如有必要,应用程序可以具有较高的权限)。

  要素三:应用程序更新

  使用最新的安全补丁使应用程序保持更新是你可以采取的最重要的安全措施之一。本节讨论一些轻松地更新应用程序的机制:

  手动更新

  自动更新

  半自动更新

  物理更新

  手动更新

  手动更新需要管理员手工下载一个文件(或使用所提供的媒体,如CD)和相关的系统上安装更新。这个选项是最不可取的,因为它迫使管理者花额外的时间来修补一个工作系统。手动更新是非常常见的开源项目(比如Apache)。

  自动更新

  当应用程序使用自动更新,它会定期在网站上进行检测,如果存在的话,它会下载并在系统上安装它。用这种方法有两个问题:

  带宽使用:考虑上千台计算机组织运行相同的每天自动更新的防病毒软件。每一天,同一个相同更新的副本被下载到成千上万运行此程序的计算机。

  安装有问题的补丁:有时补丁(厂商通过发布更新软件修复安全问题和漏洞)会导致弊大于利,因为补丁急于解决关键问题。开发商不能预见所有可能的环境,补丁可以停止应用程序或导致程序紊乱。这就是为什么测试是必要的。

  半自动更新

  有些应用程序允许管理员决定何时下载更新。更新下载之后,应用程序将更新的下载的分配到所有连接的客户端。

  物理更新

  使用实际收到的更新来更新系统。一个有目的的攻击者可以通过伪造一个看起来就像原版的但包含了木马或其他恶意软件的更新,创建一个“假的”补丁。为了反抗此类攻击,管理员可以在厂商的网站检查更新的大小和CRC32签名,并与实际副本相比较。

  要素四:与操作系统安全集成

  当一个应用程序集成了操作系统的安全性,它可以使用的操作系统的安全信息,甚至在需要的时候修改操作系统。这有时是一个应用程序的需求,或是它可能会提供一个可选功能。操作系统安全集成允许应用程序无论是在实时操作系统的进口或访问用户及其权限的列表。想象一下,一个组织有几千名员工的需要访问中央企业资源规划(ERP )应用程序。管理员可以手动输入上千个用户进入ERP的管理控制台,以及他们的权限,但这种方法耗时且需要双重管理。如果组织有一个以上的中央系统,需要用户手动录入,这种情况会更糟。

  安全信息人工录入

  一个应用程序可以允许管理员导入所有的用户信息,并用它来管理应用程序认证。虽然这种方法可能会加快应用部署,之后还会有双重管理。例如,当一个雇员离开了组织,管理员既要从组织用户列表中删除用户,也要从应用程序列表中删除。

  另一个需要考虑的问题是应用程序如何存储用户信息。它受保护的吗?加密?明文存储?如果你不信任你的应用程序的数据存储安全,可以加密整个硬盘。

  安全信息的自动集成

  安全信息的自动集成允许应用程序实时查询操作系统的用户凭证。这样,无论是最初的部署时间和双重管理问题都解决了。不过,在这种情况下有两个问题:

  如果OS的用户数据库被删除或丢失,应用程序不能访问。

  应用程序和操作系统之间的网络连接的用户数据库必须被保护以防止攻击者窃听或使用假的服务器获得信息用户的凭据。

  使用操作系统的安全授权

  应用程序可以使用操作系统安全授权。在这种情况下,应用程序设置一个特殊的目录或资源(如共享内存,一个信道或命名管道)只能由用户谁拥有某些特权访问和操作系统的保护,访问该目录或资源。

  保持操作系统安全集成可选而不是必要

  有时有必要部署一个小型应用程序,该应用程序将使用只有一个或两个操作系统的安全选项。如果应用程序迫使我们使用与操作系统安全集成的选项而不顾具体的应用场景的话,那么它结果只会降低安全(如果它使用一个不安全的方法)以及降低部署速度(因为我们只有一个或两个用户)。此外,管理员可能不愿使应用程序能够修改用户目录(和潜在的损害)。

 

上一篇:安卓防火墙 PS DroidWall

下一篇:APT攻击背后的秘密:攻击后期的数据渗出