Web-basierte Systeme - Cheatsheet
Grundlagen von HTTP/1.1 und HTTP/2
Definition:
Grundlagen von HTTP/1.1 und HTTP/2 - grundlegende Merkmale und Unterschiede der beiden Versionen. HTTP/1.1 basiert auf textbasierten Nachrichten und unterstützt Pipelining, während HTTP/2 binär ist und Multiplexing sowie Header-Kompression bietet.
Details:
- HTTP/1.1:
- Textbasiertes Protokoll
- Pipelining: Mehrere Anfragen können gesendet werden, bevor die Antworten empfangen werden
- Chunked Transfer Encoding
- Keeps-Alive für persistente Verbindungen
- Limitierungen bei gleichzeitigen Verbindungen (max. 6 pro Host)
- HTTP/2:
- Binärbasiertes Protokoll
- Multiplexing: Mehrere Nachrichten (Frames) innerhalb einer TCP-Verbindung
- Header-Kompression (HPACK)
- Server Push: Server können Ressourcen vorab senden
- Bessere Nutzung der Bandbreite und reduzierte Latenzen
- Abwärtskompatibilität zu HTTP/1.1
RESTful Services und API-Design
Definition:
RESTful Services: Architektur für verteilte Hypermedia-Systeme, nutzt HTTP zum Datenaustausch. API-Design: Entwurf von Schnittstellen für den Zugriff auf Funktionen/Services.
Details:
- REST: Representational State Transfer, baut auf HTTP auf.
- Ressourcen: Einheitliche Identifikation über URLs.
- HTTP-Methoden: GET, POST, PUT, DELETE.
- Statuscodes: Feedback zu Anfragen (z.B. 200 OK, 404 Not Found).
- HATEOAS: Hypermedia as the Engine of Application State.
- API-Design-Prinzipien: Einfachheit, Konsistenz, Fehlertoleranz.
- Versionierung: Umgang mit Änderungen in APIs.
- Sicherheitsaspekte: Authentifizierung und Autorisierung (z.B. OAuth).
SQL-Injection und Präventionsstrategien
Definition:
SQL-Injection: Sicherheitslücke, bei der Angreifer schädlichen SQL-Code in Anwendungsabfragen einschleusen.
Details:
- SQL-Injection nutzt ungesicherte Eingabefelder aus, um SQL-Abfragen zu manipulieren.
- Verwendung von Prepared Statements und Parametrisierte Abfragen zur Prävention.
- Input-Validierung: Eingaben auf erwartete Datenformate prüfen.
- Database-Userrechte minimieren: Nur notwendige Rechte vergeben.
- Verwendung von ORM (Object-Relational Mapping) kann das Risiko minimieren.
Asynchrone Kommunikation (AJAX, Fetch API)
Definition:
Asynchrone Kommunikation ermöglicht es, Daten vom Server zu laden, ohne die aktuelle Seite neu zu laden.
Details:
- AJAX: Asynchronous JavaScript and XML
- Fetch API: modernere Alternative zu AJAX, verwendet Promises
- Syntax für Fetch API:
fetch(url).then(response => response.json())
- Vorteile: verbessert Benutzerfreundlichkeit, reduziert Ladezeit
- Beispiel für Nutzung von AJAX mit jQuery:
$.ajax({url: 'url', method: 'GET', success: function(data){...}});
NoSQL-Datenbanken und ihre Verwendung
Definition:
NoSQL (Not Only SQL) Datenbanken sind nicht-relationale Datenbanksysteme, die flexibel sind und für bestimmte Anwendungsfälle bessere Leistung bieten können.
Details:
- Verwendet für große Datenmengen und schnelle Zugriffe
- Skalierbarkeit: einfach horizontal skalierbar
- Beispiele: MongoDB, Cassandra, Redis
- Schemafrei: Datenstruktur kann flexibel angepasst werden
- Geeignet für unstrukturierte und semi-strukturierte Daten
- CAP-Theorem: Konsistenz, Verfügbarkeit, Partitionstoleranz
Protokolloptimierung und -sicherheit
Definition:
Optimierung und Absicherung von Netzwerkprotokollen in Web-basierten Systemen.
Details:
- Optimierung: Reduktion von Latenzen, Erhöhung des Durchsatzes, minimale Overhead.
- Sicherheit: Schutz gegen Man-in-the-Middle (MITM)-Angriffe, DDoS, SQL-Injection, XSS (Cross-Site Scripting).
- Tools und Techniken: TLS/SSL für Verschlüsselung, Hashing, digitale Signaturen.
- Header-Kompression (z.B. HPACK bei HTTP/2).
HATEOAS (Hypermedia as the Engine of Application State)
Definition:
Ein Konzept im REST-Architekturstil, bei dem die Schnittstellen einer API Hypermedia verwenden, um den Zustand und die Interaktionen der Applikation zu steuern.
Details:
- Teil von Fielding's REST-Architektur (Richardson Maturity Model Level 3).
- Clients interagieren vollständig durch Hypermedia vom Server.
- Server sendet Hypermedia-Links mit Antworten, die mögliche nächste Aktionen anzeigen.
- Beispiel: Ein GET auf /orders enthält Links zu verwandten Bestellungen, Kundeninformationen usw.
- Ermöglicht lose Kopplung zwischen Client und Server.
- Erfordert keine Vorab-Kenntnisse der Struktur der API durch den Client.
Cross-Site Scripting (XSS) und Schutzmaßnahmen
Definition:
Art der Sicherheitslücke, bei der Angreifer schädliche Skripte in vertrauenswürdige Webseiten einschleusen.
Details:
- Typen von XSS: Stored, Reflected, DOM-based
- Stored XSS: Schadcode wird dauerhaft auf dem Server gespeichert
- Reflected XSS: Schadcode wird in einer HTTP-Anfrage reflektiert
- DOM-based XSS: Angriff erfolgt über die Manipulation des DOM-Baums
- Schutzmaßnahmen:
- Input Validierung: Eingaben auf Server- und Client-Seite prüfen
- Output Encoding: Spezielle Zeichen wie <, >, & vor der Ausgabe maskieren
- Content Security Policy (CSP): Nur bestimmte Scripte erlauben
- HTTPOnly und Secure Flags: Cookies vor JavaScript-Zugriff schützen
- Templatesicherheit: Sichere Template-Engines verwenden
- Bereinigung von Daten: Unnötige Daten vor der Ausgabe entfernen