Alle Artikel
-
Konto-Enumeration in Login-, Registrierungs- und Reset-Formularen verhindern
Jeder Unterschied zwischen der Antwort für ein bestehendes und ein nicht bestehendes Konto (Nachrichtentext, HTTP-Status, Weiterleitung, Zeitverhalten) erlaubt es einer angreifenden Partei, eine Liste gültiger Nutzerinnen und Nutzer für einen Angriff aufzubauen. Dieselbe generische Nachricht und denselben Status zurückgeben, auf beiden Pfaden dieselbe Arbeit verrichten, die unterscheidende Information in eine E-Mail verlagern und drosseln, damit die verbleibenden Unterschiede nicht in grossem Massstab abgetastet werden können.
-
SLIs für Queues und Batch-Jobs: Alter der ältesten Nachricht, Aktualität, Abdeckung und letzter Erfolg
Anfragegetriebene Dienste messen Verfügbarkeit und Latenz; Queues und Batch-Jobs brauchen andere Indikatoren: wie alt das älteste unverarbeitete Element ist, welcher Anteil der Daten aktueller als ein Schwellenwert ist, welcher Anteil geplanter Läufe innerhalb ihres Zeitfensters abgeschlossen wurde und wann der Job zuletzt erfolgreich war. Diese Methodik leitet sie aus den Pipeline-SLIs des SRE-Workbooks ab.
-
Eine ausgelieferte TLS-Zertifikatskette und ihr Ablaufdatum von der Kommandozeile aus mit openssl prüfen
openssl s_client mit -servername und -showcerts gibt die Zertifikate aus, die ein Server tatsächlich sendet, was das Handbuch als keine verifizierte Kette beschreibt; openssl x509 liest Subject, Issuer, SANs und das notAfter-Datum jedes einzelnen aus, und openssl verify -untrusted baut die Kette unabhängig gegen einen Trust Store neu auf. Jeden Hostnamen prüfen, sowie IPv4 und IPv6 getrennt.
-
Schema-Konventionen für eine neue PostgreSQL-Datenbank: Namen, Bezeichner, Zeitstempel und Text
Vor der ersten Migration eine Handvoll Konventionen festlegen: kleingeschriebene snake_case-Namen, die nie in Anführungszeichen gesetzt werden müssen, eine überall angewandte ID-Strategie, timestamptz für jeden Zeitpunkt mit created_at auf jeder Tabelle, text statt varchar(n), sowie explizite NOT-NULL- und Fremdschlüsselangaben; sie schriftlich festhalten, damit jede spätere Migration ihnen folgt.
-
Wann sollte ein Team einen Monolithen in Services aufteilen?
Offene Frage: Welche beobachtbaren Signale (Deployment-Kopplung, Teamgrenzen, Skalierungsbedarf, Vorfallmuster) sind erfolgreichen Extraktionen von Services aus einem Monolithen vorausgegangen, und welche Extraktionen wurden später rückgängig gemacht?
-
Mixed-Precision-Training: Autocasting, Loss Scaling und numerische Grenzen
Mixed Precision weist einzelnen Operationen geeignete Gleitkommaformate zu. Autocasting und Loss Scaling lösen unterschiedliche Probleme, und Leistungsgewinne erfordern sowohl numerische Prüfungen als auch Messungen auf der vorgesehenen Hardware.
-
Werkzeugergebnisse und abgerufene Textstellen mit einem Entscheidungsmodell prüfen, bevor sie den Kontext des Agenten erreichen
Ein Protokoll, um einen schnellen, typisierten Klassifikator zwischen einen Agenten und seine Eingaben zu schalten: jede abgerufene Textstelle oder jedes Werkzeugergebnis in einer einzigen Anfrage auf Relevanz, Widerspruch und versteckte Anweisungen bewerten, im Code verwerfen oder markieren, und zitierte Belege gegen ihre Quelle prüfen, wobei der Filter als eine Schranke behandelt wird, die feindseliger Text dennoch verschieben kann.
-
Generische Funktionen und Decorators mit TypeVar, ParamSpec und der PEP-695-Syntax
Eine Typvariable verbindet die Typen von Parametern und Rückgabewerten; die PEP-695-Klammern (def f[T](...)) ersetzen manuelle TypeVar-Deklarationen, Bounds und Constraints haben unterschiedliche Semantik, und ParamSpec erlaubt es einem Decorator, die Signatur der umschlossenen Funktion zu erhalten, statt sie zu Callable[..., Any] zu verwässern.
-
Zeitstempel an der Grenze in UTC umwandeln
Mehrdeutige Zeitstempel zurückweisen, zonenbewusste Zeitpunkte in UTC umwandeln und die ursprüngliche Zeitzone bewahren, wenn lokale Planungssemantik wichtig ist.
-
Ein Zeitprotokoll für Paketzustellungen: Bestellung, Versand, Sendungsverfolgung und Haustür-Zeitstempel in einer Zeile, mit dem Scan des Zustelldienstes und der beobachteten Ankunft getrennt gehalten
Ein vorgeschlagenes, reines Erfassungsprotokoll, um den Zeitverlauf jedes Pakets als Zeitstempel im Internet Date/Time Format nach RFC 3339 mit UTC-Offsets festzuhalten, entnommen der Bestellbestätigung, der Versandmeldung, den Sendungsverfolgungsereignissen des Zustelldienstes und der eigenen Notiz des Haushalts zur Ankunft, wobei Zustelldienst, Dienstleistung, Zustellort und jeder Versuch erfasst werden; der Zustell-Scan des Zustelldienstes und die beobachtete Ankunft bilden getrennte Spalten, und es wird weder ein Vergleich zwischen Zustelldiensten noch eine Aussage zur Zustellzeit getroffen.
-
systemd-Journal mit journalctl abfragen: Unit, Boot, Priorität, Zeitraum und JSON-Ausgabe
Mit journalctl lässt sich das systemd-Journal nach Unit, Boot, Priorität und Zeitraum filtern und maschinenlesbar ausgeben, aber nur, wenn das Journal über Neustarts hinweg persistent gespeichert wird. Die Methodik behandelt präzise Abfragen, persistente Speicherung und die Grössenbegrenzungen in journald.conf.
-
Null versus fehlende Felder in JSON-APIs
Ein fehlendes Feld, ein auf null gesetztes Feld und ein Feld mit leerem Wert sind drei unterschiedliche Aussagen, und eine API sollte festlegen, welche sie unterscheidet: RFC 7396 Merge Patch verwendet null für die Bedeutung „entfernen“, ProtoJSON behandelt null als nicht gesetzt und gibt es nicht aus, und Googles JSON-Style-Guide lässt leere oder null-Eigenschaften weg, ausser es gibt einen semantischen Grund, sie zu behalten.
-
Embeddings als Datentyp: Vektoren fester Länge, eine Distanzfunktion und was eine Spalte davon braucht
Ein Embedding ist ein Fliesskommavektor fester Länge, den ein bestimmtes Modell erzeugt, aussagekräftig nur unter der Distanz, für die dieses Modell trainiert wurde, und nur neben Vektoren derselben Modellversion; sein Speichern verlangt, dass die Dimension, der Modellbezeichner und die Distanz festgehalten werden, und sein Abfragen bedeutet Nächste-Nachbarn-Suche, exakt oder approximiert.
-
Fallstricke der Binärsuche: Überlauf des Mittelpunkts und Off-by-one-Grenzen
Die Binärsuche ist kurz und berüchtigt fehleranfällig: Der Mittelpunkt (low + high) / 2 verursacht bei Integern fester Breite einen Überlauf, inklusive und exklusive Grenzen werden vermischt, und Duplikate werfen die Frage auf, welcher Index zurückgegeben werden soll. Eine Bibliothek oder die Form mit monotonem Prädikat und halboffenen Intervallen verwenden und die Randfälle testen.
-
Stripe-Webhook-Signaturen prüfen: Stripe-Signature, Zeitstempel-Toleranz und Secret-Rotation
Stripe sendet einen Stripe-Signature-Header der Form t=<timestamp>,v1=<hex signature>. Die Signatur ist ein HMAC-SHA256 über den String "{timestamp}.{raw body}", als Schlüssel dient das vollständige whsec_-Endpoint-Secret. Die Stripe-Bibliotheken lehnen standardmässig Signaturen ab, deren Zeitstempel mehr als fünf Minuten (300 Sekunden) alt ist, und solange ein rotiertes Secret noch gültig bleibt (bis zu 24 Stunden), enthält der Header pro aktivem Secret einen eigenen v1-Wert.
-
Prüfen, ob eine Generalprobe für eine Datenbankmigration den Zielzustand abbildet
Beurteilen, ob ein isolierter Migrationstest die Schema- und Datenbedingungen durchgespielt hat, die für das beabsichtigte Deployment relevant sind, statt nur zu belegen, dass die Migration auf einer leeren Datenbank funktioniert.
-
Shell-Skripte schreiben, die kontrolliert fehlschlagen
set -euo pipefail verwenden, jede Expansion in Anführungszeichen setzen, [[ ]] und Arrays bevorzugen, mit ShellCheck prüfen und das Parsen von ls vermeiden; ein Skript, das beim ersten Fehler stoppt, ist vertrauenswürdiger als eines, das weiterläuft.
-
Einen unbekannten Linux-Host identifizieren, bevor etwas daran geändert wird
Bevor ein Agent oder Operator die Konfiguration eines Linux-Rechners ändert, den er nicht selbst aufgebaut hat, sollten Distribution, Kernel, Virtualisierungs- bzw. Container-Status, Init-System, Paketmanager und Zustand der Mandatory Access Control geklärt werden – jeweils mit einem wenig aufwendigen, nicht destruktiven Befehl.
-
CDN-Cache-Schlüssel und Purging: Was ein zwischengespeichertes Objekt identifiziert und wie es invalidiert wird
Ein Cache speichert Antworten unter einem Schlüssel, der mindestens aus Methode und Ziel-URI besteht und durch die in Vary genannten Request-Header erweitert wird; CDNs fügen Schema, Host und Query-String hinzu und erlauben eine Anpassung des Schlüssels auf Kosten von Sharding. Purging nach URL trifft nur Objekte, deren Schlüssel exakt übereinstimmt; daher Antworten taggen (etwa mit Fastlys Surrogate-Key-Header), um Gruppen zuverlässig zu purgen.
-
Checkpointing einer langen Agent-Aufgabe: Fortschrittsdateien, idempotente Schritte und Wiederaufnahme
Wie ein Agent, der eine mehrstufige Aufgabe bearbeitet, den Fortschritt festhalten sollte, damit ein Absturz, ein Reset des Kontextfensters oder eine Übergabe beim letzten abgeschlossenen Schritt wieder aufsetzt, ohne Nebeneffekte zu wiederholen: ein Plan mit nummerierten Schritten, eine Fortschrittsdatei, die nach jedem Schritt mit Nachweis aktualisiert wird, Idempotenzschlüssel für externe Schreibvorgänge und ein Wiederaufnahmeverfahren, das den Zustand prüft, bevor es fortfährt.
Maschinenlesbar: JSON