-1

“安全”是指数据访问权限,例如:

  • Andrew 对法国的客户只有只读权限
  • Brian 可以更新法国和德国的客户
  • Charles 是管理员,他拥有所有内容的阅读和更新权限

我可以看到每一层的潜在争论。

  1. 数据访问层

    DAL 只公开用户有权访问的客户端,并在用户试图做未经授权的事情时将适当的错误传递给业务层。

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

  2. 业务层

    因为这是业务逻辑所在的地方,只有业务层完全了解应该如何实现安全性。

  3. 界面层

    一个相切的论点是因为 UI 层是处理身份验证的层。更有力的论点是当应用程序具有非 UI 功能时:计算每日盈亏、归档等。这些程序没有安全上下文,创建虚构的“系统”用户是维护的噩梦。

  4. 一个单独的层?

    插在 3 里面的某个地方?

我正在寻找一个有说服力的论点,它会让我相信 X 层最适合大型 3 层应用程序。请不要“视情况而定”的答案;-)。

谢谢。

4

1 回答 1

0

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

这排除了将访问检查委托给客户端 - 客户端可能知道允许的访问并使用此信息以不同的行为(例如不提供某些功能左右),但最终只有服务(服务器)决定允许计数。

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

总之,您可能想要一本Roger Sessions 的书,因为它确实为大型应用程序以及如何处理安全性和其他问题提供了一些有价值的输入和思考。

于 2012-08-15T20:27:32.340 回答