App-Sicherheit ist einer der wichtigsten Aspekte, die Entwickler beim Erstellen von Mendix Apps. Es kommt jedoch häufig vor, dass Entwickler entweder warten, bis eine App größtenteils fertig ist, bevor sie Sicherheitsmaßnahmen implementieren, oder dass sie die richtigen Sicherheitsmaßnahmen gar nicht erst erfolgreich implementieren. Dies kann zu ernsthaften Problemen führen, sobald sich die App in einer Produktionsumgebung befindet.
In diesem Blogbeitrag werden die wichtigsten Grundlagen erläutert, die Sie für eine erfolgreiche Sicherheit auf eine App anwenden müssen.
Projektsicherheit vs. Modulsicherheit
Der Begriff „Benutzerrolle“ kann je nach Kontext, in dem Sie sich in der App befinden, unterschiedliche Bedeutungen haben, sei es im Projekt oder in einem der App-Module. Technisch gesehen ist eine Benutzerrolle die Rolle, die ein Benutzer in der App hat, während eine „Modulrolle“ die Rolle ist, die ein Benutzer in einem bestimmten Modul innerhalb der App hat. In der Praxis wird der Begriff „Benutzerrolle“ jedoch häufig für beide Situationen verwendet.
Dies ist eine einfache Definition, die Ihnen dabei hilft, sich zu merken, welche Rolle welche ist: Eine Benutzerrolle ist die Gruppierung ausgewählter Modulrollen. Wenn Sie eine App entwickeln, sollten Sie für jedes Modul, das Sie in der App verwenden möchten, eine Reihe von Modulrollen erstellen (wenn ein Modul keinerlei Sicherheit benötigt, sind keine Modulrollen erforderlich). Anschließend können Sie die Benutzerrollen für das Projekt selbst erstellen.
Dies ist ein Beispiel dafür, wie einer Benutzerrolle mehrere Modulrollen zugeordnet sind:
Entitätssicherheit vs. Sichtbarkeit des Vorlagenrasters
Es ist entscheidend zu wissen, wann Entitätssicherheit und Sichtbarkeit des Vorlagenrasters verwendet werden müssen. Um die Sicherheit einer App zu gewährleisten, müssen Sie sicherstellen, dass vertrauliche Daten die Datenbank nicht verlassen, wenn dies nicht vorgesehen ist. Die Entitätssicherheit gibt an, welche Daten von der Datenbank an den Client gesendet werden, und gibt Benutzern gleichzeitig die Möglichkeit, Objekte innerhalb der App zu erstellen und zu löschen.
Ohne Entitätssicherheit kann jede Seite Datenobjekte von einer Entität abrufen. Mit einer XPath-Einschränkung für ein Vorlagenraster werden Daten vom Server nur gesendet, wenn sie die XPath-Einschränkungskriterien erfüllen. Dies gilt jedoch nur für dieses bestimmte Vorlagenraster. Da die Möglichkeit besteht, dass alle Daten für eine Entität von der Datenbank an den Client gesendet werden können, gilt eine XPath-Einschränkung für ein Vorlagenraster nicht als Sicherheit und sollte nicht als solche verwendet werden. Dies ist ein häufiger Fehler, den Entwickler bei der Entwicklung von Apps machen, und dieser Fehler kann zu schwerwiegenden Sicherheitsproblemen führen. Um eine bestimmte Einschränkung in einer Entität festzulegen, um sie zu sichern, können Sie die XPath-Einschränkung auf Entitätsebene festlegen, sodass diese Einschränkung automatisch für jedes Datenraster aktiviert ist, das Sie in der App erstellen.
Wenn die Sicherheit dieser Daten nicht kritisch ist und Sie nur filtern möchten, welche Daten für ein bestimmtes Datenraster sichtbar sind, können Sie in das Datenraster selbst gehen und den XPath wie hier gezeigt festlegen:
Microflow-App-Sicherheit
Wenn Sie Microflows in einer App verwenden, stellt die erste Sicherheitsüberprüfung, die vor der Ausführung eines Microflows durchgeführt wird, sicher, dass der Benutzer über die richtige Sicherheit auf Modulebene verfügt. Wenn der Benutzer über den richtigen Zugriff auf Modulebene verfügt, werden der Microflow und alle Sub-Microflows innerhalb dieses ausgelösten Microflows ausgeführt. Sub-Microflows erben die Sicherheit ihres übergeordneten Microflows, unabhängig davon, welche Art von Sicherheit auf Modulebene auf der Sub-Microflow-Ebene festgelegt ist. Wenn Sie also in der Praxis einen Microflow mit mehreren Sub-Microflows haben und erwarten, dass nur einige dieser Sub-Microflows basierend auf der Sub-Microflow-Sicherheit ausgeführt werden, sollte Ihr Setup nicht von der Sub-Microflow-Sicherheit abhängig sein, da diese jedes Mal ausgeführt wird, wenn der Haupt-Microflow ausgeführt wird, was ein Sicherheitsproblem verursacht.
Die Sicherheit von Microflows kann schwierig sein, da Sie auswählen können, ob ein Microflow die Entitätssicherheit aktiviert, um vorzuschreiben, welche Daten verwendet werden können. Wenn für einen Microflow die Entitätssicherheit nicht aktiviert ist, kann eine Benutzerrolle Objekte von einer Entität abrufen, auf die die Benutzerrolle keinen Entitätszugriff hat, wodurch ein Sicherheitsproblem entstehen kann. Wenn Entitätszugriff anwenden aktiviert ist, wird der Hintergrund des Mikroflusses gelb und bei jeder Art von Aktion in der Datenbank wird berücksichtigt, ob die Benutzerrolle Zugriff zum Ausführen dieser Aktion hat. Diese zusätzliche Sicherheitsebene stellt sicher, dass eine Anwendung Benutzern nicht versehentlich die Berechtigung zum Lesen, Schreiben oder Löschen von Objekten erteilt, die sie nicht lesen, schreiben oder löschen dürfen.
Sicherheit verursacht seltsames App-Verhalten
Beim Entwickeln und Testen von Apps kann es häufig vorkommen, dass eine Schaltfläche oder ein Datenraster nicht klar im Modeler angezeigt wird.
Wenn dieses Verhalten auftritt, sollten Sie zunächst die Sicherheit der Aktionsschaltfläche überprüfen. Da es sich um eine New Schaltfläche, sollten Sie zunächst prüfen, ob die Erlaubt das Erstellen neuer Objekte Das Kontrollkästchen ist für diese Entität aktiviert.
Wenn dieses Kontrollkästchen aktiviert ist und die Schaltfläche immer noch nicht angezeigt wird, sollten Sie überprüfen, ob die Schaltfläche einen Mikrofluss auslöst, anstatt den Standard anzuzeigen Mendix New Schaltfläche. Im obigen Fall wird ein Mikrofluss ausgelöst – die Aktionsschaltfläche ruft einen Mikrofluss namens IVK_NeueVerkaufsinhalte. Wenn Sie die Sicherheit dieses Microflows überprüfen, können Sie sehen, dass der Benutzer keinen Zugriff auf den Microflow hat und die Schaltfläche daher nicht angezeigt wird.
Fazit
App-Sicherheit ist ein wesentlicher Bestandteil einer erfolgreichen App in Mendix. Wenn Sie sich schon früh bei der Entwicklung Ihrer App die Zeit nehmen, können Sie einige der oben beschriebenen Probleme vermeiden und sicherstellen, dass Ihre App so sicher wie möglich ist!
Wenn Sie möchten, um mehr zu erfahren über Mendix App-Sicherheit, lesen Sie bitte die Mendix Entwicklerdokumentation gefunden werden auf dieser Seite erläutert.








