Webanwendung
Webanwendung - Anwendungsprogramm nach dem Client-Server-Modell
Beschreibung
- Webanwendung
Anwendungsprogramm nach dem Client-Server-Modell des WWW
- Desktopanwendung
Anders als klassische Desktopanwendungen werden Webanwendungen nicht lokal auf dem Rechner des Benutzers installiert
- Die Datenverarbeitung findet teilweise auf einem entfernten Webserver statt
- Die Ergebnisse der Datenverarbeitung werden an den lokalen Client-Rechner des Benutzers übertragen (Thin Client)
- Genutzt wird eine Webanwendung dabei zumeist über einen Webbrowser
- Diese kommuniziert mit dem Webserver meist über das HTTP-Protokoll
Anders als Desktopanwendungen erfordern Webanwendungen kein spezielles Betriebssystem auf dem Rechner des Benutzers
- Manche Web-Apps benötigen jedoch aktuelle Webbrowser oder spezielle Laufzeitumgebungen wie beispielsweise JavaScript
Teile der Ausführungslogik führt man dennoch möglichst nicht erst auf dem Server, sondern bereits auf dem Client-Rechner aus, vor allem zur vorläufigen Validierung
- Eingabefehler werden so bereits lokal erkannt
- Rückmeldungen an den Nutzer erfolgen dadurch sofort ohne ein Warten auf die Rückantwort von einem fernen Server
Mittels AJAX-Technik werden nur Teilbereiche der Inhalte im Webclient aktualisiert ohne die Webseite erneut aufrufen zu müssen Eine solche Verteilung kann bis hin zu einer Fat-Client-Architektur ausgebaut werden (siehe Single-page-Webanwendungen)
Durch die Verbreitung internetfähiger, mobiler Smartphones und Tabletcomputer verbreitet sich die Verwendung der Abkürzung Web-App zunehmend
Funktionsweise
Allgemeine Funktionsweise
Man startet eine Webanwendung, indem man z. B.
- im Browser die URL des Webservers eingibt und damit eine Anfrage (HTTP-Request) sendet
- Der Webserver nimmt die Anfrage entgegen und übergibt sie an die Webanwendung
- Dieses erzeugt oder lädt den HTML-Quellcode einer Webseite, welche vom Webserver zurück zum Browser des Benutzers geschickt wird (HTTP-Response)
- Diese Webseite ist die grafische Benutzeroberfläche der Webanwendung
- Betrachtet man die Schichtenarchitektur einer Webanwendung, wird die Präsentationsschicht im Webbrowser ausgeführt (Thin Client)
- Teile der Logikschicht und Datenhaltung werden serverseitig ausgeführt
Durch Anklicken eines Hyperlinks auf dieser Webseite oder Ausfüllen und Absenden eines Formulars startet man eine erneute Anfrage an den Webserver
- Hierbei werden typischerweise weitere Informationen, wie z. B. die in dem Formular getätigten Eingaben (HTTP POST), die Parameter des Links (HTTP GET) und die Daten eines HTTP-Cookie an den Webserver übermittelt und als Eingabe durch die Webanwendung verarbeitet. Über Schnittstellen wie z. B. das Common Gateway Interface oder FastCGI wird die Webanwendung innerhalb des Webservers eingebunden
- Auf diese Weise werden Anfragen an die Webanwendung weitergeleitet und die Ausgaben der Webanwendung als Antwort zurückgesendet
- Die Abarbeitung eines solchen HTTP-Requests durch die Webanwendung nennt man auch Request Cycle
Bei der Benutzung von Web-Apps werden Sessiondaten (z. B. Bestelldaten eines Webshops) serverseitig in Datenbanken oder Dateien gespeichert
- Benutzerbezogene Daten können auch clientseitig durch HTTP-Cookies gespeichert werden
- Serverseitige Sitzungsinformationen verbrauchen – je aktive Benutzersitzung – Serverressourcen
- Ebenfalls erschweren serverseitige Sitzungsinformationen eine horizontale Skalierung der Webanwendungen
- Alternative Architekturansätze für Webanwendungen wie Single-page-Webanwendungen oder das REST-Paradigma kombinieren daher die serverseitige mit der clientseitigen Ausführung
Während eine Webanwendung einst nur den HTML-Quellcode der Webseiten erzeugte, werden seither auch Bilder, Animationen, Videos, Audiodateien und PDF-Dokumente erzeugt
Mobile Web-Apps
- Funktionsweise mobiler Web-Apps
Webanwendungen weisen den Vorteil auf, dass sie auf beliebigen Endgeräten betrieben werden können
- Das Endgerät benötigt einen Webbrowser, der die erforderlichen Webstandards (wie HTML5 oder JavaScript) unterstützt
- Im Bereich von mobilen Anwendungen existieren Plattform-spezifische Schnittstellen zur Anwendungsentwicklung
- Hierbei muss für jede Zielplattform eine eigene Implementierung umgesetzt werden
- Solche Umsetzungen werden als native App bezeichnet
- Webanwendungen können hingegen auf allen Plattformen ausgeführt werden
- Sie werden als mobile Web-App bezeichnet
Architektur
Eine Webanwendung läuft in der Regel auf dem Webserver, kann aber auch auf einen oder mehrere Applicationserver ausgelagert sein, welche von einem oder mehreren Webservern mit Benutzeranfragen bedient werden
- Dabei kann man zwei Architekturen unterscheiden
Standalone
- Die Webanwendung ist ein eigenständiges Binärprogramm oder ein von einem eigenständigen Binärprogramm interpretiertes Skript, welches für jede Anfrage neu gestartet wird
- Man nennt solche Anwendungen meist CGI-Programme
Integriert
Die Webanwendung ist Teil des Webservers oder ein vom Webserver interpretiertes Skript
- Es muss nicht mehr für jeden Request Cycle ein Programm gestartet werden
- Beispiele
- PHP
- Perl
- Python
- Ruby (jeweils durch entsprechende Module des Webservers interpretiert)
- Java Servlet
- JavaServer Pages
- ASP.NET
Verteilungsvarianten
- Webanwendungen werden verstärkt serverseitig ausgeführt
- Als Verteilungsvarianten liegen ebenfalls Ansätze vor
- Welche eine client-lastigere Ausführung einer Webanwendung vorsehen
- Der Webclient wird hierbei zu einer zunehmenden unabhängigen Einheit
- um serverseitige Ressourcen zu entlasten
Diese Ansätze sind insbesondere für B2C-Anwendungen – wie z. B. Facebook oder Gmail – relevant, da bei solchen Projekten mit großen Benutzerzahlen zu rechnen ist
- Es kann ebenfalls die User Experience verbessert werden, da nicht für jede Interaktion mit dem Webclient eine Client-Server-Kommunikation ausgelöst werden muss, welche die Reaktionszeiten von Webanwendungen verlangsamt
- Rich Internet Application
- Eine Rich Internet Application (RIA) setzt per Definition ein höheres Maß an Programmlogik im Client voraus, um beispielsweise Berechnungen anstatt auf dem Server auf dem Client durchzuführen
- Strenggenommen handelt es sich bei Webprojekten mit Webanwendungen, die JavaScript (incl. AJAX), Java Applets, Flash-Animationen, ActiveX-Plugins u. ä. einsetzen, auch um RIAs, sofern diese Elemente an der Interaktion mit dem Benutzer beteiligt sind
- Single-page-Webanwendungen
- Eine Single-page-Webanwendung kombiniert den RIA-Ansatz mit Webservices
- Hierbei wird die vollständige Präsentationsschicht einer Webanwendung clientseitig umgesetzt
- Ebenfalls können weitere Funktionalitäten des serverseitigen Fachkonzepts sowie eine Datenhaltung als Zwischenspeicher für einen Offlinebetrieb der Webanwendungen auf dem Client ausgeführt werden
Es handelt sich somit um eine Fat-Client-Architektur für Webanwendungen
- Bei diesem Ansatz ist der Webserver lediglich für die Verteilung von Javascript-, CSS- und Bilddateien und für die Bereitstellung von Nutzdaten über Webservices verantwortlich (z. B.
- per REST-API)
- Durch solche Ansätze entstehen häufig sogenannte Hybrid-Apps
- Sie vereint die Vorteile von Native Apps und Web-Apps, indem sie auf die Softwarekomponenten des mobilen Endgeräts zugreifen und gleichzeitig unterschiedliche Plattformen bedienen kann
Abgrenzung
- Webservice
Mit einem Webservice stellt ein Webserver Informationen in einem strukturierten Format zur Verfügung, das nicht primär zur direkten Anzeige gedacht ist
- Die Verwendung von XML genügt alleine nicht zur Abgrenzung gegen eine Webanwendung, da diese seit der Einführung von XHTML auch auf XML zurückgreifen
- Bei einem Webservice sind XML-Daten aber zur Weiterverarbeitung in einem beliebigen Programm auf dem Client gedacht
- Hierbei ist selbst die Interaktion mit einem Benutzer keine zwingende Voraussetzung
- Als Datenformat wird ebenfalls das JSON-Format eingesetzt
- Dies bietet Vorteile bei der Konsumierung durch einen Javascript-basierten Webclient, da so das Parsen von XML-Strukturen entfällt
Vergleich
Vorteile
Webanwendungen setzen auf dem Computer des Benutzers nur einen Webbrowser voraus, welcher in der Regel schon vorhanden ist
- Im Gegensatz zu herkömmlichen Desktop-Anwendungen ist keine weitere Installation von Software notwendig, wenn man von Browser-Plugins wie Flash absieht
- Dadurch erreichen Webanwendungen einen hohen Grad an Plattformunabhängigkeit, sofern viele Browser unterstützt werden
Muss die Logik einer Webanwendung geändert werden, sind Änderungen nur an einer zentralen Stelle – auf dem Webserver – notwendig, was sich günstig auf die Wartungskosten auswirkt
- Hierdurch ergeben sich auch Sicherheitsvorteile: Sicherheitslücken können sofort behoben werden, auch sind selbst bei vollständiger Kompromittierung der Webanwendung im Regelfall keine anderen Programme auf dem Anwender-System gefährdet
Nachteile
Für die Nutzung einer Webanwendung wird eine Verbindung zum Webserver benötigt
- Die Datenrate der Verbindung muss außerdem auf die Anforderungen der Webanwendung ausgelegt sein
- Dieser Umstand schließt Webanwendungen für eine Reihe von Einsatzszenarien, wie z. B. die mobile Offline-Benutzung, per Definition aus
- Webanwendungen identifizieren angemeldete Benutzer per Session-ID
- Daraus können sich Sicherheitsprobleme ergeben (siehe unten)
Webanwendungen sollten im Idealfall mit allen Webbrowsern richtig funktionieren
- In der Praxis ist dies allerdings keineswegs selbstverständlich, da die Browser HTML – trotz bestehender Standards (W3C) – unterschiedlich interpretieren
- Die leichte Abweichung in der Darstellung zwischen verschiedenen Browsern ist meist unerheblich, verheerender sind Unterschiede in der JavaScript-Interpretation, weshalb häufig Browserweichen verwendet werden müssen, teilweise sogar für unterschiedliche Browser-Versionen
- Außerdem ist durch den oben dargestellten Request-Cycle nur eine asynchrone Verarbeitung möglich, was eine Reihe von Anwendungsgebieten (z. B.
- die Bearbeitung von Videos) als Webanwendung ausschließt oder deutlich erschwert
- Weiterhin sind die Möglichkeiten zur Implementierung von Nutzerinteraktionsmöglichkeiten, sowie der Zugriff auf Hardwareressourcen des Clients deutlich eingeschränkter
Frameworks und Werkzeuge
Es gibt unterschiedliche Frameworks zur Erstellung von Web-Apps
- Webframeworks zur Datenhaltung, -datenverarbeitung und -darstellung (wie ASP.NET MVC, Spring oder Symfony)
- CSS-Frameworks für grafische Benutzeroberflächen besonders für Responsive Webdesign (wie Bootstrap)
- JavaScript-Frameworks für grafische funktionale und eventbasierte Benutzeroberflächen und asynchrone Datenübertragung (wie Sencha Touch, jQuery UI oder AngularJS.)
Die Kompetenzen von klassischen Webdesignern und mobilen Web-App-Entwicklern unterscheiden sich maßgeblich in dem Punkt, dass der Fokus im mobilen Internet im Kontext und nicht (nur) im Inhalt liegt
- Besonders das User Interface ist ein wichtiger Faktor bei der Entwicklung von mobilen Web-Apps
Sicherheit
Sicherheit von Webanwendungen ist ein zu weites Feld, um es hier allumfassend zu behandeln
- Darum beschränkt sich dieser Abschnitt auf die Beschreibung allgemein bekannter Angriffsmöglichkeiten im Zusammenhang mit Webanwendungen
- Angriffe gegen eine Webanwendung können durch die Vermeidung von Sicherheitslücken während der Implementation verhindert, oder durch den Einsatz von vorgeschalteten Web Application Firewalls erschwert oder abgewehrt werden
- SQL-Injection – Anfrageparameter mit SQL-Steuerzeichen versehen
- Cross-Site-Scripting (XSS) – Einbinden von fremden Skripten zu Manipulation des Webauftritts
- Session Hijacking – Übernehmen einer Benutzersitzung
- Cross-Site Request Forgery – Webclient auf andere URLs lenken
- Directory Traversal – Manipulation von Pfadangaben, um auf beliebige serverseitige Ressource zuzugreifen
- E-Mail-Injection – Versenden von eigenen E-Mails über Kontaktformulare
Die folgenden Angriffe richten sich nicht gegen die Webanwendung selbst, sind aber in deren Umfeld häufig zu finden
- Man-in-the-Middle-Angriff – Mithören während der Client-Server-Kommunikation
- Denial of Service – Überlastung des Webservers, sodass keine Anfragen mehr entgegengenommen werden können
- Phishing – Kundendaten über gefälschte E-Mails oder Webauftritte stehlen
Anhang
Siehe auch
Sicherheit
Weblinks
- https://de.wikipedia.org/wiki/Webanwendung
- [https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1 Sicherheit von Webanwendungen
- Maßnahmenkatalog und Best Practices vom Bundesamt für Sicherheit in der Informationstechnik (BSI)
- Web Security Threat Classification