基本原理 Mendix 应用程序安全 | Mendix

跳到主要内容

基本原理 Mendix 应用安全

应用程序安全是开发人员在创建应用程序时需要正确处理的最重要的方面之一 Mendix 应用程序。然而,开发人员通常会等到应用程序基本完成后再实施安全性,或者一开始就没有成功实施正确的安全措施。一旦应用程序进入生产环境,这可能会导致严重问题。

这篇博文将讨论成功实现应用程序安全性所需应用的关键基础知识。

项目安全与模块安全

“用户角色”一词的含义可能有所不同,具体取决于您在应用中的位置(是在项目中还是在某个应用模块中)。从技术上讲,用户角色是用户在应用中的角色,而“模块角色”是用户在应用中特定模块中的角色。但在实践中,在这两种情况下通常都使用“用户角色”。

这是一个简单的定义,可以帮助您记住哪个角色是哪个:用户角色是所选模块角色的分组。开发应用程序时,您应该为计划在应用程序中使用的每个模块创建一组模块角色(如果模块不需要任何类型的安全性,则不需要模块角色)。然后,您可以为项目本身创建用户角色。

这是一个用户角色与多个模块角色相关联的示例:

用户角色安全设置

实体安全性与模板网格可见性

知道何时使用实体安全性和模板网格可见性至关重要。为了确保应用程序的安全,您需要确保敏感数据不会在不应该离开数据库时离开数据库。实体安全性指定从数据库发送到客户端的数据,同时还使用户能够在应用程序内创建和删除对象。

访问规则截图

如果没有实施实体安全措施,任何页面都可以从实体中检索数据对象。使用模板网格 XPath 约束时,只有满足 XPath 约束条件的数据才会从服务器发送。但是,这只对该特定模板网格有效。由于实体的所有数据都可能从数据库发送到客户端,因此模板网格 XPath 约束不被视为安全约束,不应将其用作安全约束。这是开发人员在开发应用程序时常犯的一个错误,这种错误可能会导致严重的安全问题。要设置实体中的特定约束以使其安全,您可以在实体级别设置 XPath 约束,以便您在应用程序中创建的每个数据网格都会自动启用此约束。

访问规则截图

如果这些数据的安全性不是很重要,并且您只想过滤特定数据网格中可见的数据,那么您可以进入数据网格本身并设置 XPath,如下所示:

XPath 屏幕截图

微流应用安全

在应用程序中使用微流时,微流运行前将进行的第一次安全检查将确保用户具有正确的模块级安全性。如果用户具有正确的模块级访问权限,则微流及其触发微流内的所有子微流都将运行。无论在子微流级别设置了哪种类型的模块级安全性,子微流都会继承其父微流的安全性。因此,在实践中,如果您的微流有多个子微流,并且希望只有其中一些子微流基于子微流安全性运行,那么您的设置不应依赖于子微流安全性,因为它会在每次主微流运行时运行,从而导致安全问题。

微流应用安全

微流的安全性可能很棘手,因为您可以选择微流是否启用实体安全性来决定可以使用哪些数据。当微流未启用实体安全性时,用户角色可以从用户角色无权访问的实体中检索对象,因此可能会出现安全问题。当 应用实体访问 启用后,微流的背景将变为黄色,并且对数据库执行的任何类型的操作都将考虑用户角色是否有权执行该操作。此附加安全级别可确保应用程序不会意外地让用户能够读取、写入或删除他们不应该拥有的对象。

实体访问

安全问题导致应用程序出现奇怪行为

在开发和测试应用程序时,您可能会遇到的一个常见问题是看不到建模器中的按钮或数据网格。

安全性导致应用程序出现奇怪的行为

出现此行为时,您应该做的第一件事是检查操作按钮的安全性。由于这是 全新发布 按钮,你应该首先检查 允许创建新对象 已为该实体选中复选框。

创建新对象

如果选中此框但按钮仍未显示,则应检查按钮是否触发微流,而不是显示默认 Mendix 全新发布 按钮。在上述情况下,触发了一个微流程——操作按钮调用了一个名为 IVK_NewSalesContent。检查此微流的安全性时,发现用户无权访问该微流,因此按钮不显示。

安全模块

结语

应用程序安全是应用程序成功的关键部分 Mendix。在应用程序开发早期花些时间将有助于您避免上述一些问题,并确保您的应用程序尽可能安全!

如果您想了解更多有关 Mendix 应用程序安全,请阅读 Mendix 找到开发人员文档 开始.

选择你的语言