2012-08-15 80 views
-1

通过“安全”我的意思是数据访问权限,例如:3层应用程序中的安全性:在哪一层?

  • 安德鲁只具有只读到客户端的访问法国
  • 布莱恩可以在法国和德国
  • 查尔斯更新客户端是管理员,他已阅读并更新所有权利

我可以看到每个图层的潜在参数。

  1. 数据访问层

    的DAL只公开给用户具有访问客户端,当用户试图做一些未经授权通过相应的错误到业务层。

    这简化了上层,并且可以减少只能访问一小部分数据的用户的数据流量。

  2. 业务层

    ,因为这是业务逻辑所在,只有业务层的安全性应该如何实现完整的知识。

  3. UI层

    的切线参数是因为UI层是与认证交易的一个。 更强有力的论点是当应用程序具有非UI功能时:计算日常工作,存档等。这些程序没有安全上下文,创建虚构的“系统”用户是维护的噩梦。

  4. 单独的图层?

    在3的内部有槽吗?

我正在寻找一个令人信服的论据,它会让我相信层X是大型三层应用程序的最佳选择。请不要'取决于'答案;-)。

谢谢。

+0

@meagar是的,编号确实是更好:) – smirkingman 2012-08-15 20:16:13

+0

如果downvoters会添加评论来解释为什么(给予改进的机会) – smirkingman 2016-04-22 08:53:49

回答

0

我想这可能是一个主观的话题。尽管如此,我们遵循这个原则,永远不要信任任何外部来源(例如数据穿越服务界限)。通常,现代应用程序与旧的客户端 - 服务器三层模型有点不同,因为它们通常是面向服务的(我认为Web服务器也是一种服务)。

这排除了访问检查到客户端的代表团 - 客户可以了解允许访问和使用这些信息来表现不同(如无法提供某些功能或左右),但最终只有哪些服务(服务器)决定允许计数。

另一方面,数据库或DAL太低,因为大多数检查还取决于某些业务逻辑或外部信息(例如用户角色)。所以这就排除了数据层;在我们的环境中,数据访问是不受任何检查的可信空间。最后,数据库层和应用程序服务器形成一个逻辑单元(根据Roger Sessions Software Fortresses的书,可以称之为堡垒),其中不存在服务边界。如果应用层访问另一个服务,但它必须对接收到的数据进行检查。

总之,您可能需要获得Roger Sessions book的副本,因为它确实为大型应用程序提供了一些宝贵的意见和食物,以及如何处理安全问题和其他问题。