Cross-Site Scripting zählt seit Jahren zu den häufigsten Schwachstellen in Webanwendungen und erlaubt Angreifern, eigenen JavaScript-Code im Browser fremder Nutzer auszuführen. Dieser Artikel erklärt die drei XSS-Typen reflected, stored und DOM-based, zeigt wie unescaped Ausgaben zu ausführbarem Code werden, und liefert konkrete Schutzmaßnahmen über kontextabhängiges Encoding, Content-Security-Policy und die Escaping-Helfer von Magento und Hyva.
Gute Logs beantworten Fragen. Schlechte Logs erzeugen nur Rauschen, volle Dateien und falsche Sicherheit. In Magento 2 lohnt sich sauberes Logging deshalb nicht nur fürs Debugging, sondern für Betrieb, Support und belastbare Fehleranalyse.
Preferences in di.xml verknüpfen Interfaces mit konkreten Implementierungen — oder überschreiben bestehende Klassen. Das ist das mächtigste Werkzeug im DI-System und zugleich das am häufigsten falsch eingesetzte. Interface-first Design, Preference-Konflikte und Virtual Types als Alternative.
Preferences sind DI-Konfigurationen in der di.xml-Datei, die dem Magento 2 ObjectManager mitteilen, welche konkrete PHP-Klasse er instanziieren soll, wenn ein bestimmtes Interface
Ein Bug, der sich lokal partout nicht reproduzieren lässt, aber in Produktion regelmäßig auftritt, ist eines der frustrierendsten Probleme im Magento-Alltag. Mit systematischer Eingrenzung, sicherem Remote-Debugging und strukturiertem Logging wird auch der hartnäckigste Produktions-Only-Bug greifbar.
Testcode bekommt oft einen Freifahrtschein bei der Typsicherheit, weil Deadlines drücken, ein Mock schnell kopiert wird oder es ja angeblich nur ein Test ist. Dabei sollen gerade Tests Typregressionen im getesteten Code zuverlässig aufdecken. Dieser Artikel zeigt praxistaugliche typisierte Mocking-Patterns mit vi.mocked, satisfies und Mock-Factories sowie unknown und zod als Ersatz für any bei losen Testdaten.
PID 1 entscheidet über weit mehr als nur den Boot Vorgang: Service Supervision, Dependency Auflösung und Logging Architektur hängen direkt am gewählten Init System. systemd dominiert auf klassischen Servern, während OpenRC und runit gerade in schlanken Container Basis Images wie Alpine und Void Linux ihre Nische behaupten, aus guten technischen Gründen.
Eine Abfrage ohne Timeout ist eine Wette auf die Zukunft: Solange alles normal läuft, fällt sie nie auf. Sobald aber eine Tabelle unerwartet wächst, ein Index fehlt oder ein Lock länger als geplant gehalten wird, kann genau diese Abfrage minuten- oder stundenlang blockieren, Verbindungen im Pool belegen und im schlimmsten Fall die gesamte Anwendung lahmlegen. Ein sauber konfiguriertes Timeout ist deshalb keine Kosmetik, sondern eine der wirksamsten Maßnahmen gegen kaskadierende Ausfälle. Der Artikel trennt Statement-Timeout auf Datenbankseite von Connection-Timeout auf Anwendungsseite, zeigt sinnvolle Werte für unterschiedliche Anwendungsfälle und erklärt, wie eine Transaktion nach einem Timeout sauber behandelt wird.
TypeScript kompiliert zu purem JavaScript, fängt aber ganze Fehlerklassen schon beim Kompilieren ab, bevor sie im Browser oder auf dem Server auftauchen. Statische Typen, verlässliche Autocomplete-Vorschläge und sichere Refactorings verändern den Entwickleralltag spürbar, kosten aber eine Lernkurve und einen zusätzlichen Build-Schritt, der sich nicht für jedes Projekt gleichermaßen lohnt.
fzf verwandelt jede Liste, die ein Bash-Skript erzeugt, in ein durchsuchbares Auswahlmenü. Statt Nummern abzutippen, tippt der Anwender ein paar Buchstaben und bekommt sofort eine gefilterte Trefferliste. Dieser Artikel zeigt, wie fzf in eigene Skripte integriert wird, inklusive Preview-Fenster, Multi-Select und einem robusten Fallback für Umgebungen ohne fzf.
Wer React im Browser beherrscht, bringt bereits das Kernwissen für React Native mit: Komponenten, Hooks und State funktionieren identisch. Was sich ändert, sind die Bausteine für die Oberfläche, das Styling-Modell und die Art, wie native Funktionen wie Kamera oder Push-Benachrichtigungen angebunden werden. Dieser Artikel zeigt den direkten Umstieg mit konkretem Code.