Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Erstellt:
- Aktualisiert:
- Autor:
- Roland Golla
Was sind die OWASP Top 10?
OWASP Top 10 mit NCA: Schnelle Hilfe vom Experten
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Die zehn Kategorien der OWASP Top 10:2025
OWASP Top 10:2025 im Überblick
Was sich 2025 geändert hat
OWASP Top 10 in Symfony umsetzen
#[Route('/orders/{id}', methods: ['GET'])]
public function show(Order $order): Response
{
// A01: nicht nur die Route prüfen, sondern das Objekt
$this->denyAccessUnlessGranted('ORDER_VIEW', $order);
return $this->render('order/show.html.twig', [
'order' => $order,
]);
}
final class OrderVoter extends Voter
{
protected function supports(string $attribute, mixed $subject): bool
{
return $attribute === 'ORDER_VIEW' && $subject instanceof Order;
}
protected function voteOnAttribute(
string $attribute,
mixed $subject,
TokenInterface $token
): bool {
$user = $token->getUser();
return $user instanceof Customer
&& $subject->getCustomer()->getId() === $user->getId();
}
}
- A02 Misconfiguration: APP_DEBUG=0 in Production, Secrets über Symfony Vault, keine Debug Toolbar nach außen.
- A04 Cryptographic Failures: PasswordHasher mit auto Algorithmus, nie md5 oder sha1 für Passwörter, TLS überall.
- A05 Injection: Doctrine QueryBuilder mit Parametern, Twig Auto Escaping, HTML Sanitizer für Rich Text.
- A07 Authentication: Login Throttling, Remember Me nur mit sicheren Cookies, Zwei Faktor über Bundle.
- A09 Logging und Alerting: Security Events über Monolog loggen und an Sentry oder Grafana anbinden.
- A10 Exceptional Conditions: Fail Closed. Ein Fehler im Auth Pfad führt zu 403, nie zu Durchlass.
Tools für OWASP Top 10 in PHP Projekten
- Composer Audit für A03 Supply Chain: prüft composer.lock gegen die PHP Security Advisories Database. Ein Befehl, null Konfiguration.
- Renovate für A03 und A08: hält Abhängigkeiten aktuell, pinnt Versionen und Digests.
- Psalm mit Taint Mode für A05 Injection: verfolgt Nutzereingaben bis zur Datenbank oder zum Template.
- Progpilot für A05 und A04: statische Security Analyse speziell für PHP, findet auch unsichere Crypto Aufrufe.
- PHPStan für A10: strikte Typen und unerreichbarer Code machen fehlerhafte Exception Pfade sichtbar.
- Cypress für A01 und A07: E2E Tests, die als falscher Nutzer auf fremde Ressourcen zugreifen und 403 erwarten.
- Sentry für A09: Exceptions landen mit Kontext im Monitoring und lösen Alerts aus.
OWASP Top 10 und KI Coding: Guardrails statt Vertrauen
- Guidelines im Repository: Eine CLAUDE.md oder AGENTS.md, die OWASP Kategorien konkret auf das Projekt übersetzt. Beispiel: Jede Query läuft über Doctrine Parameter, jede Mutation prüft einen Voter.
- Static Analysis vor dem Commit: PHPStan, Psalm Taint Mode und Progpilot im Pre Commit Hook. Der Agent sieht die Fehlermeldung und korrigiert selbst.
- Review der Security Diffs: Änderungen an security.yaml, Voter, Formularen und Auth Flows liest ein Mensch. Immer.
It's the very start of your journey.
Composer Audit prüft PHP Abhängigkeiten auf bekannte Sicherheitslücken. CVE Erkennung, CI/CD Integration und abandoned Packages. Anleitung 2026.
Mehr erfahren
Entdecken Sie, wie Progpilot hilft, PHP-Sicherheitslücken durch statische Code-Analyse zu erkennen und die Codequalität in Legacy Code und PHP-Updates zu verbessern. Erfahren Sie, wie unsere Agentur das Tool in CI/CD-Pipelines integriert.
Mehr erfahrenOWASP Top 10 bei NCA: So arbeiten wir damit
Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.
Häufige Fragen zu OWASP Top 10
Die OWASP Top 10 sind die aktuell gültige Liste der zehn kritischsten Sicherheitsrisiken für Web Anwendungen. Die achte Ausgabe trägt den Namen OWASP Top 10:2025 und gilt 2026 als Referenz. Sie basiert auf Testdaten von über 2,8 Millionen Anwendungen plus einer Community Umfrage. Platz 1 bleibt Broken Access Control, neu sind Software Supply Chain Failures und Mishandling of Exceptional Conditions.
Zwei Kategorien sind neu: Software Supply Chain Failures auf Platz 3 und Mishandling of Exceptional Conditions auf Platz 10. Server Side Request Forgery ist in Broken Access Control aufgegangen. Security Misconfiguration stieg von Platz 5 auf 2, Cryptographic Failures und Injection rutschten je zwei Plätze nach unten. Logging heißt jetzt Logging and Alerting Failures.
Die OWASP Top 10 sind ein Awareness Dokument, keine vollständige Checkliste. OWASP selbst nennt sie den Einstieg in Application Security. Wer einen prüfbaren Standard braucht, nimmt den OWASP Application Security Verification Standard (ASVS). Für PHP Teams sind die Top 10 trotzdem der beste Ausgangspunkt, weil sie die Risiken priorisieren, die in der Praxis am häufigsten auftreten.
Symfony deckt viele Kategorien bereits ab: Security Component und Voter für Access Control, Doctrine Parameter Binding gegen SQL Injection, Twig Auto Escaping gegen XSS, CSRF Schutz in Formularen und PasswordHasher für sichere Hashes. Der Rest ist Disziplin: composer audit in der CI, saubere Konfiguration pro Environment, Exceptions kontrolliert behandeln und Security Events loggen.
Für Supply Chain nutzen wir composer audit und Renovate. Für Injection und Taint Analyse Psalm mit Taint Mode und Progpilot. PHPStan findet unsichere Typen und tote Pfade. Cypress Tests prüfen Access Control und Fehlerseiten aus Nutzersicht. KI gestützte Scanner wie Shannon oder Claude Security ergänzen das, ersetzen aber keinen manuellen Review.
Broken Access Control bedeutet, dass Nutzer Dinge tun oder sehen können, die ihnen nicht erlaubt sind. Klassisch: eine Bestellung über die ID in der URL aufrufen, die einem anderen Kunden gehört. In Symfony lösen Voter und die isGranted Prüfung das Problem zentral. Wichtig ist, jeden Datensatz zu prüfen, nicht nur die Route.
Die Kategorie umfasst Risiken aus Abhängigkeiten, Build Systemen und Verteilung. Ein kompromittiertes Composer Paket, eine manipulierte GitHub Action oder ein ungeprüftes Docker Image fallen darunter. OWASP meldet hier die wenigsten Funde, aber die höchsten Exploit und Impact Werte. Gegenmittel: composer.lock einchecken, composer audit, SBOM, Versionen pinnen.
Die neue Kategorie beschreibt fehlerhafte Behandlung von Ausnahmen und Sonderfällen. Ein Beispiel: Ein Try Catch fängt alles und die Anwendung läuft im unsicheren Zustand weiter. Oder ein Timeout beim Auth Service lässt den Request durch. Die Regel lautet Fail Closed: Im Zweifel ablehnen, loggen und dem Nutzer eine neutrale Fehlerseite zeigen.
Für normalen HTML Kontext ja. Gefährlich wird es bei raw Filtern, bei Ausgabe in JavaScript oder in Attributen wie href. Dort braucht es den passenden Escape Kontext oder eine Allowlist. Auch Inhalte aus Rich Text Editoren müssen serverseitig bereinigt werden, etwa mit dem Symfony HTML Sanitizer.
Legacy PHP sammelt Sicherheitsschulden: manuelle SQL Strings, globale Session Zugriffe, Passwörter mit md5. Beim Refactoring arbeiten wir die Top 10 systematisch ab. Characterization Tests sichern das Verhalten, dann ersetzen wir Stück für Stück durch Symfony Komponenten. Security wird so ein messbarer Teil der Modernisierung.
Ja. Die OWASP Top 10 for LLM Applications behandeln Prompt Injection, Excessive Agency und Datenabfluss bei KI Features. Sie sind eine eigene Liste und nicht Teil der Web Top 10. Wer KI Agenten oder Chatbots in PHP baut, braucht beide Listen.
Etwa alle drei bis vier Jahre. Die Ausgaben erschienen 2003, 2004, 2007, 2010, 2013, 2017, 2021 und 2025. Zwischen den Ausgaben ändert sich die Liste nicht. Teams sollten die aktuelle Version in Coding Guidelines und CI Checks verankern und beim nächsten Release gezielt die Deltas prüfen.
Beides. KI Agenten kennen die OWASP Kategorien und schreiben oft korrekten Code, wenn Guidelines sie dazu zwingen. Ohne Guardrails erzeugen sie aber schnell rohe SQL Strings oder deaktivieren CSRF Schutz. Die Lösung sind AI Coding Guidelines im Projekt, Static Analysis im Pre Commit und Review der Security relevanten Diffs durch Menschen.