0

我在应用程序服务器上有一个小型 Web 应用程序,它访问数据库服务器上非常敏感的数据。我没有直接通过 SQL 连接访问这些数据,而是考虑在数据库服务器上编写一个只能由应用程序服务器使用的 Web 服务接口。

我的想法是,如果应用程序服务器被黑客入侵,他们将无法直接访问数据。黑客将不得不处理另一层(接口),而此时我已经处理了这种情况。

我知道这会给 Web 应用程序增加一些延迟,但由于数据很敏感,我相信这是一个可以接受的权衡。

这个额外的安全“层”真的会让我的系统更安全还是我错过了什么?

4

3 回答 3

1

我认为您的评论“到这个时候我会处理这种情况”是不合时宜的,但否则这是一个好主意。如果攻击者破坏了您的前端应用程序,则不一定会给您额外的时间来加强后端层。如果包含后端层,则最可能的情况是您会在发现前端层被入侵的同时发现它。

后端层提供帮助的原因是它只会向前端层公开它需要的功能,而不是 SQL 的全部功能。它是深度防御,因此攻击者必须找到两种不同类型的漏洞并同时使用它们才能通过这两层。

于 2012-04-05T16:47:48.817 回答
1

你真的想在这里使用标准的三层架构。将 Web 服务器(无业务/应用程序逻辑)作为前端;仅限静态内容。它应该通过防火墙连接回您的应用程序服务器,只有它被允许连接(并且只允许连接到特定的应用程序服务器)。然后,只允许该应用程序服务器与数据库服务器通信。

Internet -> 防火墙 -> Web 服务器 -> 防火墙 -> 应用程序服务器 -> 数据库

有人入侵了您的 Web 服务器,他们没有得到与您的应用程序相关的任何信息,因为它们都存在于应用程序服务器上(是的,他们可以连接到它,但只能使用定义的接口,这至少会减慢它们的速度)。即使在应用程序服务器上,他们仍然需要制定进入数据库的接口。这是此类应用程序的标准安全架构。

于 2012-04-05T16:48:28.830 回答
1

我知道你来自哪里,但对我来说,它似乎闻到了一点“默默无闻的安全感”。首先要确保 Web 应用程序使用的 SQL 用户被适当地锁定,并且只能访问它需要的数据库对象。例如,对只需要读取的表的只读访问权限,对需要写入的表的写访问权限。在 MS SQL 上,这可以通过仅授予对一小部分存储过程的执行访问权限而变得更简单。用户只需要对 SP 的执行访问权限,而不需要对基础表的权限。这将利用数据库级别的安全性,而不是使用额外的、可能不安全的抽象层。

正如已经建议的那样,您可以继续为您的架构添加更多层,但我会从底层开始使用已经可用的安全选项,然后再推出您自己的。

于 2012-04-10T10:23:46.897 回答