Aller au contenu
mouaad.sek:~$
SÉCURITÉ / INTÉGRÉE

Ce site est aussi
une pièce du portfolio.

Un portfolio de sécurité doit appliquer ce qu’il défend. Chaque choix ci-dessous est imposé par le build ou la configuration d’hébergement, pas par de bonnes intentions. Vérifiable en une commande.

Contrôles en place

La politique réelle

Lue au moment du build depuis le même vercel.json que celui appliqué par l’hébergeur : cette page ne peut pas diverger de la production.

vercel.json → Content-Security-Policytxt
default-src 'self';
script-src 'self';
style-src 'self';
img-src 'self' data:;
font-src 'self';
connect-src 'self';
object-src 'none';
base-uri 'self';
form-action 'self';
frame-ancestors 'none';
upgrade-insecure-requests

Choix de conception

01

Aucun code inline, nulle part

Tout le JavaScript est regroupé dans un seul fichier externe. Les extraits de code sont colorés au build avec des classes CSS plutôt que des styles inline. Les valeurs dynamiques (l’effet de lumière sur les cartes) passent par le CSSOM, autorisé par la CSP. Résultat : script-src et style-src restent à self.

02

Statique par conception

Rien à attaquer côté serveur, car il n’y a pas de logique serveur : chaque page est du HTML pré-généré. Le contact passe par mailto, donc aucun endpoint de formulaire à spammer ou à injecter.

03

Rien de tiers

Les polices sont livrées avec le site, sans analytics, sans widgets sociaux ni scripts CDN. Les visiteurs ne sont pas suivis, et un tiers compromis ne peut pas injecter de code ici.

04

Hygiène de la supply chain

Un arbre de dépendances réduit, un lockfile versionné et npm audit maintenu à 0. Astro a été mis à jour de deux versions majeures pour éliminer une alerte critique avant qu’elle ne compte.

Essayez de me pirater

Collez une charge XSS, ou choisissez-en une ci-dessous, puis injectez-la. Cette page l’insère vraiment dans le DOM, avec une méthode qui exécuterait les scripts. La seule barrière est la Content-Security-Policy, et le journal montre le navigateur bloquer chaque tentative en temps réel.

N’exécute que votre propre saisie, dans votre propre navigateur. Rien n’est envoyé nulle part.
Résultat injecté
Journal de sécurité du navigateur

    Vérifiez vous-même

    Les en-têtes sont publics. Ces commandes et scanners montrent exactement ce que reçoit le navigateur.

    terminalbash
    $ curl -sI https://mouaadsek.dev | grep -iE "content-security|strict-transport|x-frame|referrer|permissions"

    Limites connues

    ← Retour au portfolio
    Esc

    ↑↓ naviguer · Entrée ouvrir · Échap fermer