Sécurité · Architecture local-first
Vérifiez vous-même. Ouvrez l’onglet Réseau.
BIMCHECK-Rename traite les fichiers à 100 % dans votre navigateur. Aucune requête sortante de contenu pendant un renommage — c’est mesurable, et c’est notre première ligne de défense. Cette page documente tout ce que vous pouvez auditer.
Dernière mise à jour : 2026-07-21.
1. Architecture local-first
Le cœur de BIMCHECK-Rename est une application Next.js statique + React qui lit, parse, renomme et empaquette vos fichiers entièrement côté client. Le serveur ne voit ni le contenu, ni les noms d’origine, ni les noms générés.
Côté navigateur
- • Lecture File API
- • Parsing PDF (pdf.js), DOCX (mammoth), XLSX (SheetJS)
- • Extraction ZIP (JSZip) / RAR / 7z (libarchive WASM)
- • Détection catégorie + génération nom
- • Empaquetage ZIP de sortie
Côté serveur
- • Servir les fichiers statiques Next.js
- • (Optionnel) gérer l’authentification compte Team / Cabinet
- • Aucun upload de fichier utilisateur
- • Aucun stockage de contenu document
2. Headers HTTP audités
Tous les headers sensibles sont définis dans la configuration Next.js puis appliqués par la plateforme à chaque réponse. Vous pouvez les vérifier avec curl -I.
| Header | Valeur | Pourquoi |
|---|---|---|
| Strict-Transport-Security | max-age=63072000; includeSubDomains; preload | Force HTTPS pendant 2 ans. Le paramètre est compatible preload ; l’inscription à la liste n’est pas affirmée. |
| X-Frame-Options | DENY | Empêche tout embed dans un iframe → bloque le clickjacking. |
| X-Content-Type-Options | nosniff | Empêche le navigateur de deviner le MIME → bloque les attaques MIME-sniffing. |
| Referrer-Policy | strict-origin-when-cross-origin | Limite ce qui fuite dans le header Referer vers d’autres origines. |
| Permissions-Policy | camera=(), microphone=(), geolocation=() | Désactive les API navigateur sensibles inutiles au service. |
| Content-Security-Policy | default-src 'self'; img-src 'self' data: blob:; … | Verrouille les origines autorisées pour scripts, styles, images, fonts, connect. |
3. Content Security Policy stricte
La CSP applique le principe du moindre privilège : seul ce qui est nécessaire est autorisé. En production, les scripts sont limités à l’origine du site et aux scripts inline nécessaires au runtime Next.js. La directiveunsafe-evalest réservée au serveur de développement et n’est pas envoyée en production.
default-src 'self';
script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
img-src 'self' data: blob:;
font-src 'self' https://fonts.gstatic.com data:;
connect-src 'self' blob: https://*.convex.cloud wss://*.convex.cloud
https://*.ingest.sentry.io https://*.sentry.io
https://app.posthog.com https://eu.i.posthog.com https://us.i.posthog.com;
worker-src 'self' blob:;
frame-ancestors 'none';
base-uri 'self';
form-action 'self';
object-src 'none';
manifest-src 'self';
upgrade-insecure-requests;Objectif de durcissement : supprimer progressivementunsafe-inlineaprès migration vers des nonces. Les connexions Sentry et PostHog restent inactives tant que la télémétrie n’est pas explicitement activée par configuration.
4. CI sécurité automatique
La CI vérifie chaque changement avec les tests et l’analyse statique ; les audits dynamiques ZAP et Lighthouse complètent ce contrôle selon leur fréquence indiquée.
CodeQL
À chaque push et chaque PR sur main.
Analyse statique JavaScript/TypeScript par GitHub.
OWASP ZAP Baseline
Chaque semaine et sur déclenchement manuel.
Scan dynamique passif sur l’instance Vercel preview.
Lighthouse CI
À chaque PR ouverte vers main.
Audit performance, accessibilité, bonnes pratiques, SEO.
npm audit (omit dev)
Validation manuelle avant mise en production (hors commande next build).
Vulnérabilités connues sur les dépendances de production.
TypeScript --noEmit
Pre-commit hook + CI.
Vérification de types stricte (noUncheckedIndexedAccess, strict).
Les workflows GitHub sont publics dans .github/workflows/ : codeql.yml, zap.yml, lighthouse.yml, e2e.yml.
5. Dépendances
Dépendances de runtime minimales et bien connues. Pas de SDK propriétaire opaque, pas de SaaS tiers manipulant le contenu fichier.
Cœur métier
- • Next.js 16 · React 19 · TypeScript 5
- • jszip — empaquetage ZIP
- • libarchive.js — extraction RAR/7z/TAR (WASM)
- • pdfjs-dist + react-pdf — aperçu PDF
- • mammoth — aperçu DOCX
- • xlsx (SheetJS) — aperçu tableurs
- • dxf-parser — aperçu DXF
Observabilité (opt-in)
- • @sentry/nextjs — erreurs runtime, jamais sur contenu
- • posthog-js — analytics produit, jamais sur contenu
Les deux restent désactivés tant que la télémétrie n’est pas explicitement activée. Aucune donnée personnelle n’est envoyée par défaut.
Audit npm prod : npm audit --omit=dev fait partie de la validation avant mise en production ; il n’est pas présenté comme une étape automatique du build Next.js.
6. Réponse à incident
En cas de vulnérabilité découverte (CVE dans une dépendance, faille applicative, etc.), les objectifs opérationnels suivants servent de guide. Ils ne constituent pas encore un SLA contractuel :
- Qualifier la gravité et prioriser les cas critiques avant les défauts moins sensibles.
- Correctif déployé via Vercel sans coupure de service.
- Préparer une communication proportionnée si un incident affecte réellement des utilisateurs.
- Formaliser les délais et notifications avant l’ouverture d’un service payant.
Pour signaler une faille de manière confidentielle : bimcheck-consulting@proton.me. Aucun fichier confidentiel ne doit être joint au premier message.
7. Engagement Entreprise (en préparation)
Pour les grands comptes AEC qui ne peuvent pas adopter un SaaS sans audit, les options suivantes sont en préparation. Contactez-nous si elles correspondent à votre cas — votre demande nourrit la roadmap.
Mode SaaS Entreprise
- • SSO SAML 2.0 + OIDC (Entra ID, Okta, Google Workspace)
- • Tenant isolé, data residency EU choisie
- • DPA RGPD + sub-processors list publique
- • Logs d’audit (qui a renommé quoi, sans contenu)
- • Conventions partagées par organisation
- • Branding personnalisable (logo, couleurs)
Mode on-premise
- • Image Docker / Helm chart
- • Aucun appel sortant en mode standalone
- • Licence par poste ou par déploiement
- • Activation hors ligne possible
- • Documentation d’installation administrative
- • Support 1 jour ouvré
Les documents Entreprise (DPA, architecture de référence et matrice tarifaire) ne sont pas encore publiés. Toute disponibilité devra être confirmée par écrit.
Décrire un besoin Entreprise →8. Auditer vous-même — 5 minutes
Vous n’avez pas besoin de nous croire sur parole. Voici exactement comment vérifier le local-first depuis votre navigateur :
- 01Ouvrez https://rename.bimcheck-consulting.com/app dans un onglet vierge.
- 02Ouvrez les DevTools du navigateur (F12 ou ⌘⌥I).
- 03Allez dans l’onglet Réseau (Network), filtre « Fetch / XHR ».
- 04Glissez 10 fichiers PDF/DWG/IFC sur la zone de dépôt.
- 05Composez une convention puis cliquez sur « Renommer tout ».
- 06Cliquez sur « Télécharger tout (ZIP) ».
- 07Constat attendu : aucune requête sortante ne contient le contenu de vos fichiers. Seuls les assets statiques de l’app sont chargés (JS, CSS, fonts).