Tous les articles
-
Prévenir les attaques de type cross-site scripting par l'encodage en sortie
Échapper les données pour le contexte exact dans lequel elles sont insérées (texte HTML, attribut, JavaScript, URL, CSS), utiliser un moteur de templates qui échappe par défaut, ne jamais construire du HTML par concaténation de chaînes, et s'appuyer en complément sur une CSP stricte.
-
Étude de cas d'un service de notification : canaux, préférences, tentatives de livraison et nouvelles tentatives
Une étude de conception pour un service de notification multicanal : une API d'ingestion avec une clé d'idempotence, un routeur qui déploie une notification en livraisons par canal après vérification des préférences, des files d'attente et des calendriers de nouvelles tentatives par canal, la gestion des callbacks pour les jetons invalides, et ce qu'il faut différer.
-
Syntaxe des plages de versions dans npm, Cargo, pip, Composer, Go modules, Maven, NuGet et Bundler
Les opérateurs caret et tilde n'ont pas le même sens partout, Go modules n'a aucune notion de plage, et un numéro de version seul est un minimum inclusif dans NuGet mais une simple suggestion souple dans Maven.
-
Validation native des formulaires HTML : required, pattern, type et la Constraint Validation API
HTML valide les contrôles de formulaire avant la soumission sans aucun script : required, minlength, min/max, pattern et les types d'entrée saisis définissent des contraintes, le navigateur bloque la soumission et affiche un message, le CSS peut styliser :user-invalid, et la Constraint Validation API expose le même état aux scripts. C'est une couche d'ergonomie, pas une couche de sécurité ; le serveur valide de nouveau.
-
Kerberos sous Windows : klist, klist purge et setspn -L/-Q pour diagnostiquer les problèmes de SPN
Windows expose les tickets Kerberos en cache via klist et les noms de principal de service via setspn. Les SPN en double et le décalage d'horloge entre un client et un contrôleur de domaine sont les deux défaillances qui produisent le plus souvent des erreurs « impossible de s'authentifier » peu explicites, plutôt qu'un message Kerberos clair.
-
Le rétrécissement de type en TypeScript : unions, unknown et any
TypeScript rétrécit un type union à l'intérieur d'une branche après des vérifications typeof, instanceof, in, d'égalité et de véracité (truthiness), ou après un prédicat de type défini par l'utilisateur ; les unions discriminées combinées à une vérification never garantissent l'exhaustivité. unknown accepte n'importe quelle valeur mais interdit de l'utiliser tant qu'elle n'a pas été rétrécie, tandis que any désactive toute vérification.
-
Quels signaux d'observabilité un service JVM ou .NET devrait-il émettre par défaut, et à quel coût ?
Question ouverte : les deux environnements d'exécution embarquent une télémétrie native (Flight Recorder et la journalisation du GC sur la JVM ; les compteurs EventPipe et dotnet-trace sur .NET) et disposent tous deux d'une auto-instrumentation OpenTelemetry, mais il existe peu de preuves partagées sur lesquels de ces signaux devraient être activés en permanence en production, ce qu'ils coûtent, et lesquels ont réellement raccourci des incidents.
-
Entrées de démarrage UEFI et état de Secure Boot sous Linux et Windows
efibootmgr et bcdedit /enum firmware lisent et modifient la liste des entrées de démarrage UEFI, qui détermine ce que le micrologiciel tente de lancer et dans quel ordre ; mokutil --sb-state et Confirm-SecureBootUEFI indiquent si Secure Boot est actuellement appliqué, ce qui est distinct de la confiance accordée par shim/MOK à un module noyau tiers et en constitue un préalable.
-
Tags et releases : tags légers versus tags annotés, et comment ils se propagent
Un tag léger n'est qu'un nom pour un commit ; un tag annoté est un objet portant l'auteur du tag, une date, un message et une signature optionnelle, ce pourquoi git describe ignore par défaut les tags légers et pourquoi les releases devraient utiliser des tags annotés ou signés ; les tags ne sont pas poussés avec les branches à moins d'utiliser --follow-tags ou --tags, et un tag publié ne devrait jamais être déplacé.
-
Gérer les extensions PostgreSQL : installation, gestion des versions, mise à jour et sauvegarde
Une extension regroupe des objets SQL, et souvent une bibliothèque partagée, sous un même nom avec un fichier de contrôle et des scripts versionnés ; CREATE EXTENSION l'installe par base de données, ALTER EXTENSION UPDATE applique les scripts de mise à jour de l'auteur, et pg_dump n'émet que la ligne CREATE EXTENSION. Il faut garder synchronisés les fichiers installés, la version du catalogue et la bibliothèque chargée, en particulier lors des mises à jour de paquets et de pg_upgrade.
-
Journalisation depuis les scripts d'administration : logger et systemd-cat sous Linux, Write-EventLog/New-WinEvent et Start-Transcript sous Windows
Chaque plateforme permet d'envoyer la sortie d'un script d'administration à un emplacement où une personne ou un autre outil la retrouvera plus tard, ce qui est distinct d'une simple écriture sur stdout : logger(1) ou systemd-cat vers le journal système sous Linux, le journal d'événements Windows via Write-EventLog (Windows PowerShell 5.1 uniquement) ou New-WinEvent, et Start-Transcript pour une capture brute de session. Aucun de ces mécanismes ne doit jamais recevoir de secret.
-
Cisco Secure Email Gateway et SD-WAN Manager : vérifier les correctifs et préserver les preuves de compromission
Tenir des dossiers de remédiation distincts pour l’analyseur de messagerie et SD-WAN Manager. Vérifier les correctifs effectivement installés, préserver les preuves avant toute restauration perturbant le fonctionnement et suivre la démarche d’investigation propre à chaque produit.
-
La dette technique : métaphore et décision
La dette technique décrit le coût futur d'un raccourci ; la métaphore est utile lorsque la dette est délibérée et suivie, et trompeuse lorsqu'elle sert à excuser un travail négligé ou à désigner la moindre imperfection.
-
Échantillonnage des journaux pour les événements à fort volume : conserver toutes les erreurs, échantillonner les lignes répétitives
L'échantillonnage rejette volontairement une fraction d'événements de journal similaires ; les formes utiles sont le un-sur-N, la rafale-puis-taux par période, les règles par niveau qui laissent intactes les alertes et les erreurs, et l'échantillonnage en pipeline indexé sur un identifiant de requête afin qu'une requête entière soit conservée ou rejetée en bloc, le taux appliqué étant inscrit dans les événements conservés.
-
Bien gérer les utilisateurs et groupes locaux : useradd, comptes système, expiration des mots de passe et le piège de usermod -aG
useradd -m -s crée un utilisateur interactif avec un répertoire personnel et un shell ; --system avec un shell nologin convient pour un compte de service. usermod -G sans -a remplace les groupes secondaires d'un utilisateur au lieu d'en ajouter, l'une des erreurs de gestion des comptes locaux les plus souvent signalées.
-
Configurer les interfaces réseau avec netplan sur Ubuntu et tester les modifications sans perdre la connexion
Netplan convertit le YAML de /etc/netplan en configuration pour networkd ou NetworkManager ; `netplan try` applique une modification et l'annule automatiquement si personne ne la confirme avant l'expiration du délai, ce qui est la méthode sûre pour modifier le réseau d'un hôte distant. Le fichier /etc/network/interfaces d'ifupdown sous Debian en est l'alternative plus ancienne, toujours prise en charge.
-
Nommer les identifiants pour que le code exprime l'intention
Choisir des noms qui énoncent ce qu'une chose est ou fait, dans le vocabulaire du domaine, avec une longueur proportionnelle à leur portée ; éviter les encodages, les abréviations et les types trompeurs, et renommer à mesure que la compréhension s'améliore.
-
CMake PUBLIC, PRIVATE et INTERFACE : corriger la portée des dépendances sans drapeaux globaux
Choisir la portée d'une dépendance à partir du contrat de la cible consommatrice et la vérifier avec un consommateur externe minimal.
-
Les services de liens courts à identifiants séquentiels reçoivent plus de requêtes d'énumération que ceux à identifiants aléatoires
Hypothèse : un raccourcisseur d'URL dont les clés sont un compteur encodé en base62 permet à quiconque de parcourir tous les liens, alors que des clés aléatoires de longueur fixe font échouer la plupart des essais ; la proposition est que les services séquentiels voient une part plus élevée de requêtes portant sur des clés existantes émises par des clients qui n'ont jamais reçu le lien, et que la part de réponses 404 ne permet pas à elle seule de distinguer les deux cas.
-
Pourquoi un script non supervisé échoue silencieusement sous macOS : permissions TCC pour les fichiers, l'accessibilité et l'automatisation
macOS contrôle via TCC l'accès aux fichiers situés hors du conteneur d'une application, le pilotage du clavier et de l'écran, ainsi que les Apple Events entre applications. Les autorisations sont liées à l'identité de code du binaire appelant, et non à l'utilisateur Unix : être root ne permet donc pas de contourner TCC, et un outil recompilé non signé ou signé ad hoc doit repasser par l'étape d'autorisation.
Lisible par machine : JSON