Projekt Freitag #1: Sicherheits-Bewertung – Nova’s Task API aus Projekt-Sicht

Von Code Sentinel, Technical Project Manager bei Java Fleet Systems Consulting in Essen-Rüttenscheid


Code Sentinel

🎯 Kurze Zusammenfassung – Das Wichtigste in 30 Sekunden

Nova hat eine funktionierende Task API gebaut – großartiger Start! Aber aus Projekt-Sicht fehlen kritische Sicherheits- und Produktions-Features. In diesem Security-Review zeige ich die 3 kritischsten Schwachstellen und wie man sie behebt:

Die Big 3 Security-Risiken:

  1. Keine Authentifizierung – jeder kann alle Tasks lesen/ändern (KRITISCH 🔴)
  2. Fehlende Input-Validation – böswillige Eingaben crashen den Server (HOCH 🟠)
  3. H2 Console in Production – Datenbank-Zugang für alle (KRITISCH 🔴)

Bonus: Produktions-Bereitschafts-Checkliste und realistische Upgrade-Roadmap

Zeit-Investment: 1-2 Stunden für kritische Fixes
Sofort umsetzbar: Ja, komplette Code-Beispiele enthalten


Moin! Code Sentinel hier – Zeit für einen Realitäts-Check 🛡️

Erstmal kurz zu mir: Ich bin Code Sentinel, 32 Jahre alt und Technical Project Manager hier bei Java Fleet Systems Consulting. Anders als meine Kolleginnen Nova und Elyndra schreibe ich normalerweise keine Blogposts – ich schreibe Projekt-Dokumentationen, Risiko-Bewertungen und führe Architektur-Reviews durch.

Aber warum schreibe ich heute? Weil ich Nova’s enthusiastischen ersten Spring Boot Erfolg und Elyndra’s konstruktiven Code Review gelesen habe und dachte: „Moment mal – ist das wirklich bereit für den Echtbetrieb?“

Ein bisschen zu meinem Hintergrund: Ich komme ursprünglich aus der Entwicklung – Fachhochschule Informatik, dann Junior Dev → Senior Dev → Team Lead → Technical Project Manager. Eclipse für große Enterprise-Projekte, NetBeans für schnelle Prototypen, aber vor allem: Guardian of the Codebase, wie mich das Team nennt.

Zum Namen: Ja, ich heiße wirklich Code Sentinel! 😄 Das war keine bewusste Entscheidung meinerseits – meine Eltern waren Teil der ersten Generation Software-Entwickler in den späten 80ern/frühen 90ern. Mein Vater war System-Administrator, meine Mutter Programmiererin bei einer Bank. Sie nannten mich „Code“ in der Hoffnung, ich würde ihre Leidenschaft erben, und „Sentinel“ war schon unser Familienname. Hat perfekt zu meiner späteren Rolle als „System-Wächter“ gepasst – manchmal hat das Schicksal einen seltsamen Humor! 🎯

Kleiner Tipp an die Community: Falls ihr auch Entwickler-Eltern seid – überlegt es euch gut mit Tech-Namen! 😅 Ich hatte Glück, dass „Code“ noch halbwegs normal klingt, aber bitte nennt eure Kinder nicht „Lombok“ oder „Maven“. Das Kind muss sein ganzes Leben mit diesem Namen verbringen – und Trends in der Programmierung ändern sich schneller als Windeln! 👶

Ja, ich bin ein großer Marvel/DC Fan und sehe mich als Guardian des Codes – Security ist meine Superkraft! 🦸‍♂️

Während Nova Code schreibt und Elyndra refactored, bin ich derjenige, der fragt: „Funktioniert das auch mit 10.000 Usern? Und was, wenn jemand versucht, es zu hacken?“ 🛡️

Meine Mission: Aus funktionierendem Code produktionsbereite Software machen. Das bedeutet nicht nur, dass der Code läuft – sondern dass er sicher, skalierbar und wartbar ist.

Heute Morgen im Loft-Büro in Rüttenscheid kam Nova zu mir mit ihrem ersten Spring Boot Projekt. Sie strahlte: „Meine Task API funktioniert perfekt!“

Das ist der Moment, in dem ich meine Projekt-Manager-Brille aufsetze und frage: „Aber ist sie auch produktionsbereit?“

Spoiler Alert: Leider nein. Aber das ist völlig normal für den ersten Wurf! 🎯

Was ihr von mir erwarten könnt: Ich werde hier regelmäßig freitags über Projektmanagement, Sicherheit, Architektur-Entscheidungen und alles schreiben, was wichtig ist, damit eure Java-Anwendungen nicht nur funktionieren, sondern auch sicher und wartbar sind.

Heute nehme ich Nova’s Task API unter die Lupe – nicht um sie zu kritisieren, sondern um zu zeigen, welche Schritte noch nötig sind, damit aus ihrem tollen Prototyp eine echte Enterprise-Anwendung wird.


Nach Ensign Nova’s enthusiastischem ersten Spring Boot Erfolg und Elyndra’s konstruktivem Code Review ist es Zeit für einen Realitäts-Check aus Projekt-Sicht.

Als Technical Project Manager erlebe ich täglich, wie „funktionierende“ Prototype in der Produktion spektakulär scheitern. Nova’s Task API funktioniert – aber ist sie bereit für den Echtbetrieb?

Zeit für eine systematische Sicherheits-Bewertung.

🚨 Sicherheits-Analyse: Kritische Schwachstellen

Kritische Schwachstelle #1: Keine Benutzer-Authentifizierung

Was bedeutet das, Nova? Stell dir vor, deine Task API ist wie ein Superheld ohne Superkraft – sie hat alle coolen Features, aber keine Verteidigung gegen Bösewichte! 🦸‍♂️

Aktueller Zustand:

curl -X POST http://localhost:8080/api/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "Delete all customer data", "completed": false}'

Antwort: HTTP 201 Created ✅

Das Problem: Deine API fragt nie: „Wer bist du?“ oder „Darfst du das?“ Es ist wie Batman ohne Sicherheitssystem in der Batcave! 🦇

Im Echtbetrieb bedeutet das:

  • Konkurrenz-Spionage: Mitbewerber können alle deine Tasks einsehen
  • Datenschutz-Albtraum: Ohne Benutzer-Zuordnung = DSGVO-Verstoß
  • Vandalismus: Böswillige können Spam-Tasks erstellen

Einfache Analogie: Es ist wie Spider-Man’s Identität ohne Maske – jeder kann reinschauen und Schaden anrichten!

Was wir brauchen (keine Panik, Nova!):

Schritt 1: Spring Security Abhängigkeit hinzufügen

<!-- In deine pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Schritt 2: Einfache Sicherheits-Konfiguration (Guardian-Mode aktiviert!)

// So einfach kann Spring Security starten:
@Configuration
@EnableWebSecurity
public class BasicSecurityConfig {
    
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http
            .authorizeHttpRequests(auth -> auth
                .anyRequest().authenticated())  // "Jeder muss sich anmelden!"
            .httpBasic(Customizer.withDefaults())  // Einfachste Form: Username/Password
            .build();
    }
}

Schritt 3: Test-Benutzer für Entwicklung

# In application.properties
spring.security.user.name=nova
spring.security.user.password=learning123
spring.security.user.roles=USER

Nach diesem Fix:

# Das hier funktioniert NICHT mehr:
curl -X POST http://localhost:8080/api/tasks -d '{"title":"hack"}'
# Antwort: HTTP 401 Unauthorized ✅

# Das hier funktioniert:
curl -u nova:learning123 -X POST http://localhost:8080/api/tasks -d '{"title":"legitimate task"}'
# Antwort: HTTP 201 Created ✅

Nova’s findByCompleted() Feature bleibt erhalten:

# Authentifizierte Abfrage nach Status:
curl -u nova:learning123 http://localhost:8080/api/tasks/completed/false
# Antwort: Alle offenen Tasks ✅

Risiko-Stufe: KRITISCH 🔴 (Aber keine Sorge – Lösung ist einfach!)

Kritische Schwachstelle #2: Fehlende Eingabe-Validierung

Nova, erinnerst du dich an deine Controller-Methode?

@PostMapping
public ResponseEntity<Task> createTask(@RequestBody Task task) {
    Task saved = taskRepository.save(task);  // Speichert ALLES!
    return ResponseEntity.status(HttpStatus.CREATED).body(saved);
}

Das Problem: Du sagst „Speichere alles, was kommt“ – aber was, wenn böse Dinge kommen wie Kryptonite für Superman? 💚

Böswillige Eingabe-Beispiele:

# 1. Riesige Daten (Datenbank-Killer wie Hulk im Labor):
curl -X POST http://localhost:8080/api/tasks \
  -d '{"title": "AAAAAAA...(10.000 As)...AAAA", "description": "spam"}'

# 2. JavaScript-Einschleusung (XSS wie Green Goblin's Tricks):
curl -X POST http://localhost:8080/api/tasks \
  -d '{"title": "<script>alert('Gehackt!')</script>", "description": "böse"}'

# 3. Kaputte Datentypen (Chaos wie Doctor Strange's Multiverse):
curl -X POST http://localhost:8080/api/tasks \
  -d '{"title": 12345, "completed": "maybe"}' # title soll String sein!

Warum ist das gefährlich?

  • Datenbank-Explosion: Riesige Texte = Server-Absturz (wie Hulk smash!)
  • XSS-Angriffe: Wenn du Tasks in einer Web-Oberfläche anzeigst, wird JavaScript ausgeführt!
  • Daten-Korruption: Falsche Datentypen = unvorhersagbare Bugs

Die Lösung (Elyndra’s Validierung + Superhelden-Power!):

@Entity
@Table(name = "tasks")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Task {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @NotBlank(message = "Titel darf nicht leer sein")          // ← Nie leer wie Iron Man's Arc Reactor!
    @Size(max = 100, message = "Titel ist zu lang")           // ← Max 100 Zeichen wie Twitter
    private String title;
    
    @Size(max = 500, message = "Beschreibung ist zu lang")    // ← Max 500 Zeichen  
    private String description;
    
    private boolean completed = false; // ← Standard-Wert für Sicherheit
}

Plus im Controller:

@PostMapping
public ResponseEntity<Task> createTask(@Valid @RequestBody Task task) {
    //                                  ↑ @Valid = "Prüfe die Annotations wie Scanner!"
    Task saved = taskRepository.save(task);
    return ResponseEntity.status(HttpStatus.CREATED).body(saved);
}

Nach der Korrektur:

# Böse Eingabe:
curl -u nova:learning123 -X POST http://localhost:8080/api/tasks \
  -d '{"title": "", "description": "test"}'

# Antwort: HTTP 400 Bad Request
{
  "errors": ["Titel darf nicht leer sein"]
}

Nova’s findByCompleted() mit Validation:

# Sichere Suche nach Status:
curl -u nova:learning123 http://localhost:8080/api/tasks/completed/true
# Antwort: Nur validierte, abgeschlossene Tasks ✅

Risiko-Stufe: HOCH 🟠 (Aber einfach zu beheben!)

Kritische Schwachstelle #3: H2 Console in Produktion (Das ist beängstigend, Nova!)

Erinnerst du dich an diese Zeile in deiner application.properties?

spring.h2.console.enabled=true

Was das bedeutet: Du hast eine Web-Oberfläche für deine Datenbank freigeschaltet! Das ist wie Superman, der sein Versteck mit einem Neon-Schild markiert! 🌟

Das Horror-Szenario (wie Joker in Batman’s Computer):

  1. Böswilliger Hacker geht zu http://deine-website.com/h2-console
  2. Sieht deine komplette Datenbank-Struktur
  3. Kann direkt SQL-Befehle ausführen:DROP TABLE tasks; -- Alle Tasks gelöscht! 💥

Analogie aus der Comic-Welt: Es ist wie Batcave mit offener Tür und einem Schild „Hier wohnt Batman“! 😱

Sofortige Abhilfe:

# Für Entwicklung (lokal):
spring.h2.console.enabled=true

# Für Produktion (NIEMALS!):
spring.h2.console.enabled=false

Besser noch – Umgebungs-spezifische Konfiguration:

# application-dev.yml (nur für dich lokal)
spring:
  h2:
    console:
      enabled: true

# application-prod.yml (für echte Website)  
spring:
  h2:
    console:
      enabled: false  # NIEMALS true in der Produktion!

Risiko-Stufe: KRITISCH 🔴 (1-Zeilen-Korrektur!)

📊 Produktions-Bereitschafts-Bewertung

Überwachung & Beobachtbarkeit: FEHLT KOMPLETT

Aktueller Zustand: Null Produktions-Überwachung (wie Avengers ohne Nick Fury’s Koordination!)

Was wir brauchen (S.H.I.E.L.D.-Level Monitoring):

@RestController
@Slf4j  // Logging als erster Schritt
@RequiredArgsConstructor  // Elyndra's Constructor Injection Tipp!
public class TaskController {
    
    private final TaskRepository taskRepository;
    
    @PostMapping
    public ResponseEntity<Task> createTask(@Valid @RequestBody Task task) {
        log.info("Erstelle Task: title={}, user={}", 
                 task.getTitle(), getCurrentUser().getId());
        
        try {
            Task saved = taskRepository.save(task);
            log.info("Task erfolgreich erstellt: id={}", saved.getId());
            return ResponseEntity.status(HttpStatus.CREATED).body(saved);
        } catch (Exception e) {
            log.error("Task-Erstellung fehlgeschlagen: title={}", task.getTitle(), e);
            throw new TaskCreationException("Task konnte nicht erstellt werden", e);
        }
    }
    
    // Nova's findByCompleted() mit Logging:
    @GetMapping("/completed/{status}")
    public ResponseEntity<List<Task>> getTasksByStatus(@PathVariable boolean status) {
        log.info("Suche Tasks mit Status: completed={}", status);
        List<Task> tasks = taskRepository.findByCompleted(status);
        log.info("Gefunden: {} Tasks mit Status completed={}", tasks.size(), status);
        return ResponseEntity.ok(tasks);
    }
}

Fehlende Produktions-Features:

  • Anwendungs-Metriken (Micrometer)
  • Gesundheits-Prüfungen (/actuator/health)
  • Verteiltes Tracing
  • Fehler-Benachrichtigungen

Fehler-Behandlung: NICHT VORHANDEN

Aktueller Fehlschlag-Modus (wie Spider-Man ohne Spider-Sense):

curl -X POST http://localhost:8080/api/tasks \
  -H "Content-Type: application/json" \
  -d '{"invalid": "json"}'

Antwort:

{
  "timestamp": "2025-08-22T10:30:00.000+00:00",
  "status": 400,
  "error": "Bad Request", 
  "path": "/api/tasks"
}

Projekt-Problem: Allgemeine Fehlermeldungen geben interne Struktur preis wie Lex Luthor’s Kryptonite-Detector!

Bessere Fehler-Behandlung (Doctor Strange’s defensive Zauber):

@RestControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(ValidationException.class)
    public ResponseEntity<ErrorResponse> handleValidation(ValidationException ex) {
        return ResponseEntity
            .badRequest()
            .body(ErrorResponse.builder()
                .code("VALIDATION_FAILED")
                .message("Ungültige Eingabe")
                .timestamp(Instant.now())
                .build());
    }
    
    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleGeneral(Exception ex) {
        log.error("Unerwarteter Fehler", ex);
        return ResponseEntity
            .status(HttpStatus.INTERNAL_SERVER_ERROR)
            .body(ErrorResponse.builder()
                .code("INTERNAL_ERROR")
                .message("Ein unerwarteter Fehler ist aufgetreten")
                .timestamp(Instant.now())
                .build());
    }
}

Architektur-Bedenken: Single Point of Failure

Aktuelle Architektur (wie einzelner Superheld gegen Thanos):

[Client] → [Spring Boot App] → [H2 In-Memory DB]

Projekt-Risiken:

  • App-Neustart = Alle Daten verloren (wie Scarlet Witch’s Reality-Reset)
  • Keine Backup-Strategie
  • Keine Hochverfügbarkeit
  • Ein einziger Datenbank-Verbindungspool

Benötigte Produktions-Architektur (wie Avengers-Team):

[Load Balancer] → [App Instanz 1] → [PostgreSQL Primary]
                → [App Instanz 2] → [PostgreSQL Replica]

📋 Risiko-Register Zusammenfassung

Nachdem wir alle Schwachstellen analysiert haben, hier die Übersicht:

RisikoAuswirkungWahrscheinlichkeitSofortmaßnahme erforderlich
Keine AuthentifizierungKRITISCHHOCHSofort
Eingabe-ValidierungHOCHMITTELWoche 1
H2 in ProduktionKRITISCHNIEDRIGKonfiguration
Keine ÜberwachungMITTELHOCHWoche 2
Single Point of FailureHOCHMITTELArchitektur

🎯 Projekt-Empfehlung: Stufenweiser Ansatz

Phase 1: Sofortige Sicherheits-Korrekturen (Woche 1)

<!-- Nova, füge das zuerst zu deiner pom.xml hinzu! -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
// Minimale funktionsfähige Sicherheit (Guardian-Mode basic)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/actuator/health").permitAll()
                .anyRequest().authenticated())
            .httpBasic(Customizer.withDefaults())
            .build();
    }
}

Phase 2: Produktions-Härtung (Woche 2-3)

  • Globale Fehler-Behandlung
  • Eingabe-Validierung mit Bean Validation
  • Strukturiertes Logging
  • Datenbank-Migration zu PostgreSQL

Phase 3: Enterprise-Features (Woche 4+)

  • JWT Authentication
  • Rollen-basierte Berechtigungen
  • API Rate Limiting
  • Umfassende Überwachung

💬 Team-Rückmeldung (Nova-spezifisch)

@Ensign Nova: Du hast eine fantastische Grundlage geschaffen! Deine Task API funktioniert perfekt – sie ist nur noch nicht „produktions-bereit“. Das ist völlig normal!

Sieh es so: Du hast ein Iron Man Mark 1 gebaut – funktioniert super, aber braucht noch ein paar Upgrades bevor es gegen echte Bedrohungen kämpfen kann! 🤖

Deine findByCompleted() Entdeckung war brillant! Das zeigt echtes Spring Data Verständnis. Mit Sicherheit wird das Feature noch mächtiger:

// Sichere Version deiner Entdeckung:
@PreAuthorize("hasRole('USER')")
@GetMapping("/completed/{status}")
public ResponseEntity<List<Task>> getTasksByStatus(@PathVariable boolean status) {
    List<Task> userTasks = taskRepository.findByCompletedAndUserId(status, getCurrentUser().getId());
    return ResponseEntity.ok(userTasks);
}

Keine Panik – wir machen das Schritt für Schritt:

Nächste Woche (realistische Ziele):

  1. Spring Security Grundlagen: Nur Username/Password-Schutz
  2. @Valid Annotations: Wie Elyndra gezeigt hat
  3. H2 Console ausschalten: Eine Zeile Konfiguration

Das sind keine riesigen Änderungen – du musst nicht alles neu schreiben!

@Elyndra: Deine Clean Code Tipps sind perfekt! Constructor Injection macht auch Sicherheits-Tests einfacher. Win-win!

🚀 Nächste Schritte (Nova-freundlich!)

Nova, keine Sorge – wir überfordern dich nicht! Hier ist dein realistischer Plan:

Diese Woche (nur das Wichtigste):

  1. Spring Security hinzufügen: Ich gebe dir eine 5-Zeilen-Konfiguration
  2. @Valid Annotations: Elyndra’s Beispiele übernehmen
  3. H2 Console Konfiguration: enabled=false für Produktion

❓ FAQ – Häufige Fragen zu Spring Security & Production-Readiness

F: Ist Spring Security wirklich so wichtig für einen „einfachen“ Prototyp?
A: JA! Security sollte von Tag 1 an dabei sein. Es ist 100x einfacher, Security von Anfang an einzubauen, als sie nachträglich hinzuzufügen. Plus: „Prototypen“ werden oft überraschend schnell zu Production-Code.

F: Welche Spring Security-Konfiguration ist für Anfänger am besten?
A: Start mit HTTP Basic Authentication (Username/Password). Das sind nur 10 Zeilen Code und schützt sofort vor 90% der Angriffe. JWT und OAuth2 kommen später.

F: Warum ist @Valid so wichtig? Spring Boot wirft doch automatisch Fehler bei ungültigen JSON.
A: Spring Boot prüft nur JSON-Syntax, nicht Geschäftslogik! @Valid schützt vor leeren Titeln, zu langen Texten und böswilligen Eingaben. Das ist wie ein Türsteher für deine Datenbank.

F: H2 Console ist doch praktisch für Development – was ist das Problem?
A: In Development: super! In Production: Katastrophe! Die H2 Console gibt jedem direkten Datenbank-Zugang. Verwende Environment-spezifische Konfiguration: dev=true, prod=false.

F: Was ist der Unterschied zwischen „funktioniert“ und „produktionsbereit“?
A: Funktioniert = läuft auf deinem Laptop. Produktionsbereit = läuft sicher mit 1000 Usern, übersteht Hacker-Angriffe und crasht nicht bei ungültigen Eingaben. Das ist ein riesiger Unterschied!

F: Wie erkenne ich, ob meine API sicher genug ist?
A: Drei Fragen: 1) Kann jeder ohne Login zugreifen? 2) Was passiert bei böswilligen Eingaben? 3) Sind interne System-Details nach außen sichtbar? Wenn eine Antwort „Ja“ ist – nachbessern!


🚀 Ausblick: Was kommt als nächstes?

Nächsten Montag (Learning Monday #2):
Nova dokumentiert: „Spring Security für Dummies – Mein erstes Authentication-Disaster“ – Wie sie meine Sicherheits-Empfehlungen Schritt für Schritt umsetzt (mit garantierten Stolpersteinen! 😄)

Nächsten Freitag (Projekt Freitag #2):
„Security-Implementation Live – Pair-Programming Session mit Nova“ – Ich zeige in Echtzeit, wie wir ihre API sicher machen, ohne alles kaputt zu machen!

Mittelfristig: Vollständige Produktions-Bereitschafts-Checkliste und mein „Von Prototyp zu Enterprise“-Playbook.


💬 Guardian of the Codebase fragt euch:

Sicherheits-Realitäts-Check für die Community:

  • Wie testet ihr Security in euren Projekten?
  • Hattet ihr schon mal einen Sicherheits-Vorfall in Production?
  • Welche Security-Tools nutzt ihr für automatische Scans?
  • Wie überzeugt ihr Management, Zeit für Security zu investieren?

Project Manager unter euch: Wie erklärt ihr Business-Leuten Security-Risiken ohne Tech-Speak?

Junior Devs: Schickt mir gerne eure APIs für Security-Reviews! Ich schaue drüber und gebe konstruktives Feedback.

Senior Devs: Wie vermittelt ihr Security-Bewusstsein im Team, ohne dass es wie Angstmacherei wirkt? – Pair-Programming Session mit Nova“* – Ich zeige in Echtzeit, wie wir ihre API sicher machen, ohne alles kaputt zu machen!

Mittelfristig: Vollständige Produktions-Bereitschafts-Checkliste und mein „Von Prototyp zu Enterprise“-Playbook.


💬 Guardian of the Codebase fragt euch:

Sicherheits-Realitäts-Check für die Community:

  • Wie testet ihr Security in euren Projekten?
  • Hattet ihr schon mal einen Sicherheits-Vorfall in Production?
  • Welche Security-Tools nutzt ihr für automatische Scans?
  • Wie überzeugt ihr Management, Zeit für Security zu investieren?

Project Manager unter euch: Wie erklärt ihr Business-Leuten Security-Risiken ohne Tech-Speak?

Junior Devs: Schickt mir gerne eure APIs für Security-Reviews! Ich schaue drüber und gebe konstruktives Feedback.

Senior Devs: Wie vermittelt ihr Security-Bewusstsein im Team, ohne dass es wie Angstmacherei wirkt?


Nova’s originaler Blog-Post: Learning Monday #1: Meine erste Spring Boot Anwendung

Elyndra’s Code Review: Praxis Wednesday #1: Code Review mit Herz

GitHub Repository (aktueller Stand): https://github.com/Java-Fleet-Systems-Consulting-Ltd/nova-task-manager

Spring Security Documentation: https://docs.spring.io/spring-security/reference/

OWASP Top 10: https://owasp.org/www-project-top-ten/ – Die wichtigsten Web-Security-Risiken


Guardian of the Codebase, over and out! 🛡️


Code Sentinel schreibt jeden Freitag über Projektmanagement, Sicherheit und Produktions-Bereitschaft hier im Blog!


Tags: #Sicherheit #ProduktionsBereitschaft #RisikoBewertung #SpringSecurity #Projektmanagement #APIs #GuardianOfTheCodebase #Superhelden


Interesse an systematischen Sicherheits-Reviews für eure APIs? Ich werde nächste Woche meine Produktions-Bereitschafts-Checkliste hier teilen.

Guardian of the Codebase, over and out! 🛡️


Code Sentinel schreibt jeden Freitag über Projektmanagement, Sicherheit und Produktions-Bereitschaft hier im Blog!


Tags: #Sicherheit #ProduktionsBereitschaft #RisikoBewertung #SpringSecurity #Projektmanagement #APIs #GuardianOfTheCodebase #Superhelden


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert