Résultats de recherche 2
Réinitialiser les filtresProtection des données personnelles et contrôle d'humanité sans CAPTCHA
### Contexte & Enjeux Diffuser publiquement en clair des coordonnées personnelles (numéro de téléphone, adresse e-mail) sur un site web expose au moissonnage automatique (*scraping*) par des robots spammers. Jusqu'alors, l'accès à ces informations exigeait une connexion préalable à l'Espace Pro. Cependant, cette contrainte alourdissait le parcours d'un recruteur ou d'un contact arrivant depuis un CV papier, un PDF ou un QR Code via le sous-domaine dédié `cv.fredt.eu`. L'objectif est d'offrir un accès immédiat aux coordonnées pour tout visiteur humain, sans imposer de CAPTCHA visuel ou de mot de passe. --- ### Actions & Choix Techniques * **Vérification d'Humanité en Arrière-plan (Human Check / Proof-of-Work) :** - Mise en place d'un défi cryptographique léger basé sur la preuve de travail SHA-256 (via le protocole open-source *Cap* / `trilbymedia/cap-php`). - Déclenchement au clic sur un simple bouton ("*Pour voir les coordonnées, je ne suis pas un robot*"). * **Souveraineté & Respect du RGPD :** - Aucun appel vers un service tiers externe (pas de dépendance à Google reCAPTCHA ou Cloudflare Turnstile). - Validation du défi entièrement exécutée entre le navigateur du client et le serveur PHP du portfolio. * **Persistance en Session :** - Une fois la preuve d'humanité validée par le serveur, un jeton sécurisé est conservé en session HTTP. Les coordonnées complètes sont alors affichées sans réinterroger l'utilisateur durant sa navigation. --- ### Résultats & Bénéfices * **Expérience Recruteur Fluide :** Un simple clic suffit pour afficher instantanément l'e-mail et le téléphone, sans formulaire de connexion ni puzzle visuel. * **Protection Efficace contre le Spam :** Blocage des robots d'exploration automatique incapable d'exécuter la preuve de travail JavaScript. * **Architecture Souveraine & Légère :** Composant PHP pur intégré sans aucun build Node.js en production, parfaitement compatible avec l'hébergement mutualisé OVH.
### Contexte Pour présenter mes compétences sans surcouche et surcoût de maintenance de framework lourd, j'ai conçu et développé ce portfolio sur-mesure. Le besoin exigeait une application rapide, sécurisée, accessible (WCAG) et facilement déployable sur un hébergement mutualisé standard. ### Actions réalisées * **Architecture PHP MVC :** Conception d'une structure logicielle modulaire en PHP 8 avec autoloader Composer, séparation nette des responsabilités (`AuthManager`, `SessionManager`, `Fail2banManager`, `Layout`) et routage explicite. * **Moteur Hybride Flat-File & SQLite :** - **Contenu éditorial (Projets, Notes, Docs) :** Stockage en Markdown avec métadonnées Frontmatter YAML, indexé en temps réel dans un fichier JSON léger (`articles_index.json`). - **Authentification & Audit :** Bases SQLite embarquées et découplées (`auth.db` pour le contrôle d'accès RBAC et `fail2ban.db` pour le suivi des événements de sécurité). * **Sécurité en profondeur :** Protection anti-brute force Fail2ban applicative (statuts avertissement/blocage IP sur 24h), Content Security Policy (CSP) stricte sans aucun script ni style inline, et gestion des sessions sans bloquer d'inodes. * **Accessibilité & UX :** Conformité WCAG 2.1 Level AA (liens d'évitement `.skip-link`, gestion `:focus-visible`, sémantique HTML5 complète, support du mode sombre et gestion A4 à l'impression). * **Moteur de recherche intégré :** Recherche plein texte indexée inter-sections (Markdown + CV) respectant les permissions d'accès aux données personnelles. ### Résultats chiffrés * **Performance d'affichage :** Temps de rendu serveur `< 15 ms` et score Google Lighthouse de **100/100** sur la performance et la sécurité. * **Zéro dépendance lourde :** Empreinte mémoire minime (`< 2 Mo` par requête) tournant nativement sur PHP 8.x sans base de données externe complexe. * **Couverture de tests :** Suite de 12 modules de tests unitaires CLI automatisés validant la sécurité, la gestion des sessions et la cohérence de l'index à chaque modification.