Alle Artikel
-
Cross-Site-Scripting durch Ausgabe-Encoding verhindern
Daten passend zum jeweiligen Einfügekontext escapen (HTML-Text, Attribut, JavaScript, URL, CSS), ein Templating verwenden, das standardmässig escaped, HTML nie durch String-Konkatenation zusammenbauen und das Ganze mit einer strikten CSP absichern.
-
Durchgang durch einen Benachrichtigungsdienst: Kanäle, Präferenzen, Zustellversuche und Wiederholungen
Ein Entwurfsdurchgang für einen mehrkanaligen Benachrichtigungsdienst: eine Ingest-API mit Idempotenzschlüssel, ein Router, der nach Prüfung der Präferenzen eine Benachrichtigung in Zustellungen je Kanal auffächert, Warteschlangen und Wiederholungspläne pro Kanal, Callback-Verarbeitung für ungültige Tokens und was zurückgestellt werden sollte.
-
Syntax für Versionsbereiche in npm, Cargo, pip, Composer, Go modules, Maven, NuGet und Bundler
Caret- und Tilde-Operatoren bedeuten nicht überall dasselbe, Go modules kennen gar keine Bereiche, und eine blosse Versionsnummer ist in NuGet ein inklusives Minimum, in Maven dagegen nur ein weicher Vorschlag.
-
Native HTML-Formularvalidierung: required, pattern, type und die Constraint Validation API
HTML validiert Formularfelder vor dem Absenden ganz ohne Skript: required, minlength, min/max, pattern und typisierte Eingaben definieren Bedingungen, der Browser blockiert das Absenden und zeigt eine Meldung, CSS kann :user-invalid stylen, und die Constraint Validation API macht denselben Zustand für Skripte zugänglich. Das ist eine Usability-Schicht, keine Sicherheitsschicht; der Server validiert erneut.
-
Kerberos unter Windows: klist, klist purge und setspn -L/-Q bei SPN-Problemen
Windows stellt gecachte Kerberos-Tickets über klist und Service Principal Names über setspn zur Verfügung. Doppelte SPNs und Zeitabweichungen zwischen Client und Domänencontroller sind die zwei Fehlerursachen, die am häufigsten als unklare «Authentifizierung nicht möglich»-Meldungen statt als eindeutige Kerberos-Fehler auftreten.
-
TypeScript Narrowing: Unions, unknown und any
TypeScript verengt einen Union-Typ innerhalb eines Zweigs nach typeof-, instanceof-, in-, Gleichheits- und Wahrheitswert-Prüfungen oder einem benutzerdefinierten Type Predicate; diskriminierte Unions zusammen mit einer never-Prüfung ergeben Exhaustiveness. unknown akzeptiert jeden Wert, verbietet aber dessen Verwendung, bis er verengt wurde, während any die Prüfung ganz abschaltet.
-
Welche Observability-Signale sollte ein JVM- oder .NET-Dienst standardmässig ausgeben, und mit welchem Overhead?
Offene Frage: Beide Laufzeitumgebungen bringen eingebaute Telemetrie mit (Flight Recorder und GC-Logging auf der JVM; EventPipe-Counter und dotnet-trace bei .NET), und beide bieten OpenTelemetry-Auto-Instrumentierung – doch es gibt kaum geteilte Belege dazu, welche davon in Produktion dauerhaft aktiv sein sollten, was sie kosten und welche tatsächlich Vorfälle verkürzt haben.
-
UEFI-Boot-Einträge und Secure-Boot-Status unter Linux und Windows
efibootmgr und bcdedit /enum firmware lesen und ändern die UEFI-Boot-Eintragsliste, die bestimmt, was die Firmware in welcher Reihenfolge zu starten versucht. mokutil --sb-state und Confirm-SecureBootUEFI zeigen, ob Secure Boot aktuell durchgesetzt wird – getrennt von der shim/MOK-Vertrauensstellung für Kernelmodule von Drittanbietern und zugleich deren Voraussetzung.
-
Tags und Releases: Lightweight- versus annotierte Tags und wie sie sich verbreiten
Ein Lightweight-Tag ist nur ein Name für einen Commit; ein annotierter Tag ist ein eigenes Objekt mit Tagger, Datum, Nachricht und optionaler Signatur – deshalb ignoriert git describe Lightweight-Tags standardmässig, und deshalb sollten Releases annotierte oder signierte Tags verwenden; Tags werden nicht zusammen mit Branches gepusht, ausser mit --follow-tags oder --tags, und ein veröffentlichter Tag sollte nie verschoben werden.
-
PostgreSQL-Erweiterungen verwalten: installieren, versionieren, aktualisieren und dumpen
Eine Erweiterung bündelt SQL-Objekte und oft eine Shared Library unter einem Namen mit einer Control-Datei und versionierten Skripten; CREATE EXTENSION installiert sie je Datenbank, ALTER EXTENSION UPDATE wendet die Update-Skripte des Autors an, und pg_dump gibt nur die Zeile CREATE EXTENSION aus. Installierte Dateien, Katalogversion und geladene Bibliothek im Gleichschritt halten, besonders bei Paket-Upgrades und pg_upgrade.
-
Logging aus Admin-Skripten: logger und systemd-cat unter Linux, Write-EventLog/New-WinEvent und Start-Transcript unter Windows
Jede Plattform bietet einen Weg, die Ausgabe eines Admin-Skripts so abzulegen, dass sie später von Menschen oder anderen Werkzeugen gefunden wird, getrennt von stdout: unter Linux logger(1) oder systemd-cat ins Systemlog, unter Windows das Ereignisprotokoll via Write-EventLog (nur Windows PowerShell 5.1) oder New-WinEvent sowie Start-Transcript für eine rohe Sitzungsaufzeichnung. In keines dieser Ziele darf je ein Geheimnis gelangen.
-
Cisco Secure Email Gateway und SD-WAN Manager: Fehlerbehebungen prüfen und Beweise für eine Kompromittierung sichern
Für den E-Mail-Scanner und SD-WAN Manager separate Behebungsnachweise führen. Tatsächlich installierte Fehlerbehebungen prüfen, Beweise vor eingreifenden Wiederherstellungsmassnahmen sichern und dem produktspezifischen Untersuchungsverfahren folgen.
-
Technische Schulden als Metapher und als Entscheidung
Technische Schulden beschreiben die künftigen Kosten einer Abkürzung; die Metapher ist nützlich, wenn die Schulden bewusst eingegangen und nachverfolgt werden, und irreführend, wenn sie nachlässige Arbeit entschuldigt oder auf jede Unvollkommenheit angewendet wird.
-
Log-Sampling bei Ereignissen mit hohem Volumen: jeden Fehler behalten, die repetitiven Zeilen sampeln
Sampling verwirft absichtlich einen Teil ähnlicher Log-Ereignisse; die nützlichen Formen sind Eins-von-N, Burst-dann-Rate je Zeitraum, Regeln je Level, die Warnungen und Fehler unangetastet lassen, sowie Pipeline-Sampling anhand einer Request-ID, sodass eine ganze Anfrage gemeinsam behalten oder verworfen wird, wobei die angewandte Rate in die überlebenden Ereignisse geschrieben wird.
-
Lokale Benutzer und Gruppen richtig verwalten: useradd, Systemkonten, Passwortalterung und die Falle bei usermod -aG
useradd -m -s legt einen interaktiven Benutzer mit Home-Verzeichnis und Shell an; --system mit einer nologin-Shell ist die passende Form für ein Dienstkonto. usermod -G ohne -a ersetzt die ergänzenden Gruppen eines Benutzers, statt welche hinzuzufügen – einer der am häufigsten gemeldeten Fehler bei lokalen Konten.
-
Netzwerkschnittstellen unter Ubuntu mit netplan konfigurieren und Änderungen testen, ohne die Verbindung zu verlieren
Netplan wandelt YAML-Dateien unter /etc/netplan in Konfigurationen für networkd oder NetworkManager um. `netplan try` wendet eine Änderung an und macht sie automatisch rückgängig, wenn sie nicht innerhalb einer Frist bestätigt wird – der sichere Weg, Netzwerkeinstellungen auf einem entfernten Host zu ändern. Das ältere, weiterhin unterstützte `/etc/network/interfaces` von Debian (ifupdown) dient als Gegenstück.
-
Bezeichner so benennen, dass sich Code wie Absicht liest
Namen wählen, die im Vokabular der Domäne sagen, was etwas ist oder tut, in einer zur Sichtbarkeit proportionalen Länge; Kodierungen, Abkürzungen und irreführende Typangaben vermeiden und umbenennen, sobald sich das Verständnis verbessert.
-
CMake PUBLIC, PRIVATE und INTERFACE: Abhängigkeitsumfang reparieren, ohne globale Flags zu setzen
Legt den Abhängigkeitsumfang anhand des Vertrags des konsumierenden Targets fest und prüft ihn mit einem minimalen externen Konsumenten.
-
Kurzlink-Dienste mit fortlaufenden Kennungen erhalten mehr Enumerationsanfragen als Dienste mit zufälligen Kennungen
Hypothese: Ein URL-Verkürzer, dessen Schlüssel ein in Base62 codierter Zähler sind, erlaubt es jedem, sämtliche Links der Reihe nach durchzugehen, während zufällige Schlüssel fester Länge die meisten Rateversuche ins Leere laufen lassen; die These lautet, dass Dienste mit fortlaufenden Schlüsseln einen höheren Anteil an Anfragen für bestehende Schlüssel von Clients sehen, die den Link nie erhalten haben, und dass der Anteil an 404-Antworten allein die beiden Fälle nicht unterscheidet.
-
Warum ein unbeaufsichtigtes Skript unter macOS stillschweigend scheitert: TCC-Berechtigungen für Dateien, Bedienungshilfen und Automation
macOS regelt den Zugriff auf Dateien ausserhalb des App-Containers, die Steuerung von Tastatur und Bildschirm sowie Apple Events zwischen Apps über TCC. Massgeblich ist dabei die Code-Identität des aufrufenden Binaries, nicht der Unix-Benutzer: root umgeht die Prüfung also nicht, und ein neu gebautes, unsigniertes oder ad hoc signiertes Tool muss die Berechtigungen von vorn erhalten.
Maschinenlesbar: JSON