Sicherheit von Java-Anwendungen: Top-10 Schwachstellen für Einsteiger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Sicherheit von Java-Anwendungen: Top-10 Schwachstellen für Anfänger



Java bleibt eine der beliebtesten Programmiersprachen für die Entwicklung von Unternehmens- und Webanwendungen. Wie jede andere Sprache ist sie jedoch auch anfällig für Angriffe. Für angehende Entwickler ist das Verständnis der Grundlagen der Sicherheit nicht nur eine gute Praxis, sondern eine lebenswichtige Fähigkeit. In diesem Artikel analysieren wir die Top-10 der häufigsten Schwachstellen von Java-Anwendungen, geben Codebeispiele und erklären, wie Sie Ihr Projekt schützen können.



1. SQL-Injection

Dies ist eine der ältesten und gefährlichsten Schwachstellen. Sie tritt auf, wenn Benutzereingaben ohne vorherige Verarbeitung direkt in eine SQL-Abfrage eingefügt werden.

Beispiel für anfälligen Code:

String query = "SELECT * FROM users WHERE username = '" + userInput + "'";Statement stmt = connection.createStatement();ResultSet rs = stmt.executeQuery(query);

Ein Angreifer kann in userInput einen Wert wie ' OR '1'='1 übergeben, was zur Rückgabe aller Daten aus der Tabelle führt.

Wie man sich schützt: Verwenden Sie immer PreparedStatement.

String query = "SELECT * FROM users WHERE username = ?";PreparedStatement pstmt = connection.prepareStatement(query);pstmt.setString(1, userInput);ResultSet rs = pstmt.executeQuery();


2. Cross-Site Scripting (XSS)

XSS-Angriffe ermöglichen das Einschleusen eines bösartigen Skripts in eine Webseite, das dann im Browser des Opfers ausgeführt wird. Java-Servlets und JSP werden oft Opfer dieser Schwachstelle, wenn sie die Ausgabe nicht maskieren.

Beispiel für anfälligen Code:

out.println("<p>Hallo, " + request.getParameter("name") + "</p>");

Wie man sich schützt: Maskieren Sie HTML-Zeichen oder verwenden Sie moderne Template-Engines (z.B. Thymeleaf oder JSP mit JSTL).

// Verwendung der Bibliothek Apache Commons LangString safeInput = StringEscapeUtils.escapeHtml4(userInput);out.println("<p>Hallo, " + safeInput + "</p>");


3. Cross-Site Request Forgery (CSRF)

CSRF zwingt einen Benutzer, eine unerwünschte Aktion auf einer Website auszuführen, auf der er authentifiziert ist. Zum Beispiel eine Überweisung zu tätigen oder das Passwort zu ändern.

Beispiel einer Schwachstelle:

<img src="https://bank.com/transfer?amount=1000&to=hacker" />

Wie man sich schützt: Verwenden Sie CSRF-Tokens. In Spring Security geschieht dies automatisch, wenn der Schutz aktiviert ist.

// CSRF-Schutz in Spring Security aktivierenhttp.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());


4. Unsichere Deserialisierung

Java ermöglicht die Wiederherstellung von Objekten aus Byteströmen. Wenn ein Angreifer ein bösartiges serialisiertes Objekt übergeben kann, kann dies zur Ausführung von beliebigem Code führen.

Beispiel für anfälligen Code:

ObjectInputStream ois = new ObjectInputStream(request.getInputStream());Object obj = ois.readObject(); // Potenziell gefährliche Operation

Wie man sich schützt:

  • Deserialisieren Sie keine Daten aus unzuverlässigen Quellen.
  • Verwenden Sie Whitelists für Klassen.
  • Nutzen Sie Alternativen wie JSON (Jackson/Gson) mit Validierung.


5. Schwachstellen in Bibliotheken (Dependency Vulnerabilities)

Moderne Java-Projekte verwenden Dutzende von Drittanbieter-Bibliotheken (Maven, Gradle). Veraltete oder anfällige Versionen sind eine häufige Ursache für Hacks.

Wie man sich schützt:

  • Aktualisieren Sie Abhängigkeiten regelmäßig.
  • Verwenden Sie Analysetools: OWASP Dependency-Check, Snyk, GitHub Dependabot.
  • Fügen Sie eine Überprüfung in die CI/CD-Pipeline ein.


6. Unsichere Authentifizierung und Sitzungsverwaltung

Schwa

Blogs

Buchempfehlungen