Konzeption und Realisierung einer Plattform für mobile und webbasierte Dienste auf Basis von J2EE unter Verwendung von freier Software

J2EE-Plattform: Mobile & Web-Dienste

Dokumentinformationen

Schule

Fachhochschule Stuttgart, Hochschule der Medien (HdM)

Fachrichtung Medieninformatik
Dokumenttyp Diplomarbeit
Ort Stuttgart
Sprache German
Format | PDF
Größe 2.37 MB

Zusammenfassung

I.SMSmonkey Eine kostengünstige J2EE basierte SMS und Messaging Plattform

Die Arbeit beschreibt die Entwicklung der nM-Plattform, welche den SMS-Service "SMSmonkey" beinhaltet. SMSmonkey bietet kostengünstigen SMS-Versand über einen SMS-Gateway-Anbieter, deutlich günstiger als über herkömmliche Mobilfunkanbieter (z.B. T-Mobile, E-Plus). Zusätzlich ermöglicht der Service den Austausch von MSGs (Textnachrichten) zwischen SMSmonkey-Nutzern via Store-and-Forward, ähnlich dem E-Mail-Versand. Die Nutzung erfolgt über ein MIDlet und eine webbasierte Benutzeroberfläche, beide mit dem Struts-Framework entwickelt. Die Abrechnung basiert auf Credits. Ein klarer Vorteil gegenüber herkömmlichen SMS-Apps ist die Möglichkeit, alle SMS-Varianten als Flash-SMS zu versenden und die anonyme Nutzung. Die Kostenersparnis gegenüber herkömmlichem SMS-Versand kann 50% und mehr betragen, abhängig vom Mobilfunkanbieter und -vertrag.

1. Kostengünstiger SMS Versand über SMSmonkey

SMSmonkey nutzt den Service eines SMS-Gateway-Anbieters, um SMS ins Mobilfunknetz zu leiten. Die Kosten für den SMS-Versand über SMSmonkey sind deutlich niedriger als bei der direkten Nutzung von Mobilfunkanbietern wie T-Mobile oder E-Plus. Diese Kostenersparnis wird an die Kunden weitergegeben. Zusätzlich zu den GPRS-Datenübertragungskosten und der SMSmonkey-Gebühr kann, je nach Mobilfunkanbieter und Vertrag, eine Gesamtkostenersparnis von 50% und mehr im Vergleich zum herkömmlichen SMS-Versand erzielt werden. Die niedrigen Kosten sind ein zentraler Wettbewerbsvorteil von SMSmonkey.

2. Zusätzliche Funktionen und Vorteile von SMSmonkey

Neben dem günstigen SMS-Versand bietet SMSmonkey weitere Vorteile gegenüber herkömmlichen SMS-Apps. Alle drei SMS-Varianten können als Flash-SMS versendet werden, eine Funktion, die in vielen Standard-Mobiltelefon-Apps fehlt. Darüber hinaus ermöglicht SMSmonkey den anonymen SMS-Versand. Eine besondere Funktion ist der Versand von MSGs (Messages), Textnachrichten, die zwischen SMSmonkey-Nutzern über ein Store-and-Forward-Prinzip ausgetauscht werden können. Ähnlich wie E-Mails, werden MSGs auf dem SMSmonkey-Server gespeichert und dem Empfänger über dessen MIDlet bereitgestellt. Da netads keine Gebühren für MSGs erhebt, entstehen dem Nutzer lediglich die GPRS-Datenübertragungskosten für die HTTP-Verbindung zum Server.

3. Registrierung MIDlet und Credits bei SMSmonkey

Um SMSmonkey zu nutzen, müssen sich Kunden zunächst auf der Webseite registrieren. Anschließend laden sie das SMSmonkey-MIDlet herunter und erwerben ein Paket mit Credits. Credits sind die interne Währung des Systems und werden für den Versand von SMS verbraucht. Nach einer einfachen Freischaltung des MIDlets stehen alle Funktionen von SMSmonkey zur Verfügung. Die PHP-Version von SMSmonkey bietet zusätzlich die Möglichkeit, SMS und MSGs über die Webseite zu versenden und den Postausgang (SMS) sowie den Post-Ein- und -Ausgang (MSGs) einzusehen. Dieses kombinierte Angebot aus MIDlet- und Web-Zugang bietet Nutzern Flexibilität und Komfort.

II.Architektur und Technik der nM Plattform

Die nM-Plattform basiert auf einer J2EE-Architektur mit mehreren Schichten (Multi-Tier Architektur). Der Kern der Plattform (Kern-Ebene) beinhaltet die Benutzerverwaltung und das Creditkonto-Management. Die Service-Ebenen, wie SMSmonkey, beinhalten die spezifische Geschäftslogik. Die Kommunikation zwischen den Ebenen und den Clients (mobile Clients, Webclients) wird durch Servlets, Servletfilter und EJBs (Enterprise Java Beans) abgewickelt. Die Präsentationsschicht nutzt das Struts-Framework mit JSPs. Die persistente Datenhaltung erfolgt mit Entity Beans, wobei das Value Object Pattern zur Vereinfachung der Datenübertragung eingesetzt wird. Das Session Facade Pattern sorgt für lose Kopplung zwischen den Schichten. Die Konfiguration der Plattform wird über JMX (Java Management Extensions) mit MBeans verwaltet, zugänglich über die JMX Console.

1. J2EE Architektur und mehrschichtiger Aufbau

Die nM-Plattform basiert auf dem J2EE-Framework, welches die Herstellerunabhängigkeit der Komponenten garantiert. Der Entwickler konzentriert sich auf die Geschäftslogik, während die Infrastruktur vom Framework bereitgestellt wird. Die Plattform ist mehrschichtig aufgebaut und folgt einem Multi-Tier-Modell. Die Kern-Ebene beinhaltet allgemeine Funktionen wie Benutzerverwaltung und -datenfilterung, während die Service-Ebenen (z.B. SMSmonkey) die jeweilige Service-Logik und -Datenhaltung umfassen. Diese lose Kopplung der Ebenen ermöglicht Flexibilität und Skalierbarkeit. Jede Ebene kann als eigenständige Multi-Tier-Applikation betrachtet werden, was eine einfache Verteilung auf verschiedene Maschinen ermöglicht.

2. Rollenverteilung und Datenmanagement

Die Anforderungen an die nM-Plattform waren eher allgemeiner Natur, was die Implementierung komplexer gestaltete. Die Aufgabenverteilung konzentriert sich auf die Kern-Ebene für allgemeine Funktionen und die Service-Ebenen für die spezifische Geschäftslogik. Jeder Service benötigt eigene, service-spezifische Daten und allgemeine Verwaltungsdaten. Die Datenhaltung wird durch den Einsatz von CMP Entity Beans vereinfacht, die die Persistenz der Daten abstrahieren. Logisch wird nur mit Objekten umgegangen, welche persistent sind; die eigentliche Datenhaltung wird durch die Beans abgedeckt. Das System nutzt das Value Object Pattern zur Vereinfachung von Methodensignaturen und zur Verbesserung des Laufzeitverhaltens in verteilten Umgebungen.

3. Technologien und Frameworks

Die Präsentationsschicht der Webanwendung basiert auf dem Struts-Framework (MVC Model 2). Struts trennt die Komponenten Model, View und Controller und bietet dem Entwickler einfache Schnittstellen. JSP-Entwickler benötigen keine Java-Kenntnisse für die Implementierung der JSP-Seiten. Der Standard-Controller übernimmt die Konvertierungen des HTTP-Protokolls. Für die Kommunikation mit mobilen Clients und die Überprüfung von Parametern auf Konformität und verbotene Zeichenketten wird ein Servletfilter eingesetzt, der das Chain of Responsibility Pattern implementiert. Die Verwendung von Servletfiltern schützt die Anwendung vor fehlerhaften Requests. Die Konfiguration der Plattform wird über JMX (Java Management Extensions) mit MBeans realisiert.

III.Sicherheit und Konfiguration der nM Plattform

Ein Schwerpunkt der Arbeit liegt auf der Sicherheit der Plattform. Gefahren wie SQL Injection werden durch verschiedene Maßnahmen wie Input-Validierung mit dem Struts Validation Framework und Servletfilter adressiert. Die JMX Console, obwohl bequem für die Konfiguration (z.B. über die Methoden kernKonfigurationAktualisieren() und kernKonfigurationAuslesen()), erfordert eine sichere Authentifizierung um unerwünschten Zugriff zu verhindern. Die Plattform nutzt MySQL als Datenbank und JBoss Application Server 4.01 als Anwendungsserver. Die Entwicklung wurde mit Eclipse und dem Lomboz-Plugin durchgeführt.

1. Sicherheitsaspekte der Webanwendung

Der Webapplikationsteil der nM-Plattform ist besonders gefährdet, da er ständig von unbekannten Personen über das Internet erreichbar ist. Die Gefahr von SQL-Injection-Angriffen wird explizit erwähnt. Auch wenn die mobilen Clients einer geschlossenen Benutzergruppe vorbehalten sind, besteht durch die Verwendung von HTTP und Klartext-Zeichenketten die Gefahr von Angriffen und dem Nachstellen von Geschäftsinformationen. Die Notwendigkeit zur Vermeidung von SQL-Injection wird hervorgehoben. Das Beispiel mit dem Benutzernamen 'arthur' illustriert die Problematik, die durch das Zulassen von Sonderzeichen in Passwörtern entsteht. Um eine Anwendung sicher gegen SQL-Injection zu machen und gleichzeitig die Verwendung kritischer Sonderzeichen zuzulassen, ohne von einem bestimmten Datenbankprodukt abhängig zu sein, ist ein erheblicher programmatischer Aufwand notwendig.

2. Sicherheitsmechanismen und maßnahmen

Die nM-Plattform implementiert Maßnahmen zum Schutz vor unerwünschten Zugriffen. Der Struts Validation Framework wird eingesetzt, um Eingaben auf ihre Gültigkeit zu prüfen, z.B. die Länge des Benutzernamens. Ein Servletfilter kontrolliert die Konformität der eingehenden HTTP-Requests mit erwarteten Datentypen und sucht nach verbotenen Zeichenketten. Fehlerhafte Requests werden direkt vom Filter abgefangen und eine entsprechende Meldung an den Client geschickt, bevor Schäden in tieferen Ebenen der Anwendung entstehen können. Die Authentifizierung von Benutzern geschieht über die Verwaltungsfassade des Kerns. Erfolgreich authentifizierte Benutzer werden durch ein Session-Attribut identifiziert, welches der Servletfilter überprüft. Die JMX-Console ist durch eine Login-Passwort-Authentifizierung geschützt, die in den Konfigurationsdateien des JBoss-Servers festgelegt wird. Zusätzliche Sicherheit könnte durch den Austausch der JMX-Console gegen eine proprietäre Management-Applikation erreicht werden.

3. Laufzeitkonfiguration via JMX und Sicherheitsüberlegungen

Die Konfiguration der nM-Plattform und ihrer Services ist zur Laufzeit über JMX (Java Management Extensions) möglich. Das KonfigService-ManagedBean, bestehend aus der Klasse KonfigService und dem Interface KonfigServiceMBean, ist dafür verantwortlich. Die Konfiguration wird über die JMX Console Web Application des JBoss Application Servers verwaltet, welche die MBeans und deren Attribute und Methoden zur Verfügung stellt. Die Methoden kernKonfigurationAktualisieren() und kernKonfigurationAuslesen() ermöglichen das Aktualisieren und Auslesen der Konfiguration. Die JMX Console ist über eine Login-Passwort-Authentifizierung geschützt. Die Sicherheit der JMX Console wird als potenzielle Schwachstelle adressiert, da ein erreichbarer JMX-Agent den Server angreifbar macht. Es wird darauf hingewiesen, dass die Verwendung von aktuellen Softwareversionen (maximal 6 Monate alt bei Projektbeginn) die Sicherheit erhöht und regelmäßige Updates und Patches notwendig sind.