个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Coffre documentaire sécurisé : RBAC refusé par défaut, intégrité SHA-256, journal d’audit, recherche plein texte et double authentification — Django 5.2 LTS · PostgreSQL
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗C-Tech Archives est le coffre documentaire de C-Tech : chaque document y est classé, protégé selon son niveau de confidentialité, scellé par une empreinte SHA-256 et suivi par un journal d’audit. Le projet, académique, a été conçu comme une application réelle : les droits sont décidés par le serveur et refusés par défaut, l’interface ne montre que ce que le rôle autorise, et chaque affirmation de sécurité est couverte par un test.
Cinq des six améliorations soumises au vote des utilisateurs sont désormais disponibles.
Chaque archive porte un emblème unique, calculé à partir de sa référence (jamais de son contenu) : trois anneaux symétriques, des teintes et une rotation tirées d’une empreinte SHA-256. Le serveur dessine le sceau en SVG, et le formulaire le recalcule à l’identique pendant la saisie, avec la même empreinte côté navigateur.
| Menace | Réponse | Preuve |
|---|---|---|
| Lire une archive hors de son niveau | QuerySet filtré avant liste, recherche, pagination, palette et graphiques ; 404 anti-inférence | RBAC-001…040, tests de la palette et des analyses |
| Fichier piégé ou falsifié | Extension, type MIME et signature binaire vérifiés ; aperçu limité à PNG, JPEG et texte, isolé (sandbox, nosniff) | FILE-001…020, ArchivePreviewTests |
| Altération silencieuse | Empreinte SHA-256 au dépôt, vérification à la demande, alertes sur 30 jours | HASH-001…024, ArchiveDetailV2Tests |
| Brute force | Verrouillage temporaire par compte, mot de passe non testé pendant le verrou | LoginThrottleTests |
| XSS et injection de contenu | CSP stricte sans unsafe-inline, aucun script ni style en ligne, autoéchappement | test de conformité CSP de tous les gabarits |
| Formules malveillantes dans un export | Cellules préfixées dans le CSV | AuditExportTests |
| Compte admin réactivé à son insu | Bootstrap en mode création seule au démarrage | BootstrapCreateOnlyTests |
| Dépendances vulnérables | Versions figées, pip-audit en CI | 0 vulnérabilité connue |
Le projet ne se présente pas comme « totalement sécurisé » : il n’offre ni MFA, ni antivirus, ni chiffrement applicatif au repos. Les risques résiduels sont listés dans
docs/security-review.md.
flowchart LR
U([Navigateur]) -->|HTTPS · CSP stricte| MW[Middlewares<br/>sécurité · session · CSRF]
MW --> V[Vues Django]
V --> P{Politique RBAC<br/>refus par défaut}
P -->|hors périmètre| N[404 anti-inférence]
P -->|autorisé| S[Services métier]
S --> DB[(PostgreSQL)]
S --> F[[Stockage privé<br/>noms UUID]]
S --> H[Empreinte SHA-256]
S --> A[(Journal d’audit<br/>append-only)]
Un monolithe Django modulaire : accounts (identité, rôles, connexion), archives (domaine, RBAC, fichiers, intégrité, sceaux), audit (journal, export), dashboard (indicateurs) et config (paramètres, CSP, santé). Les détails sont dans docs/architecture-final.md.
Prérequis : Python 3.12 ou plus et Docker.
git clone https://github.com/eulogep/c-tech-archives.git
cd c-tech-archives
cp .env.example .env # renseigner DJANGO_SECRET_KEY et POSTGRES_PASSWORD
make setup # environnement virtuel + versions figées
make db # PostgreSQL 17 via docker compose
make migrate
CTECH_DEMO_PASSWORD='choisissez-un-mot-de-passe-robuste' make seed
make run # http://127.0.0.1:8000
make seed crée trois comptes de démonstration ([email protected], [email protected], [email protected]), 42 archives réalistes et dix-huit semaines d’activité. Connectez-vous avec chacun pour voir l’interface changer selon le rôle, puis vérifiez l’intégrité de CT-DEMO-0013 : son fichier a été volontairement altéré.
python -m venv .venv
.venv\Scripts\activate # Windows ; sinon : source .venv/bin/activate
pip install -r requirements.txt -c constraints.txt
python manage.py migrate
python manage.py seed_demo --password "choisissez-un-mot-de-passe-robuste"
python manage.py runserver
Une instance PostgreSQL existante convient : renseignez POSTGRES_HOST et POSTGRES_PORT dans .env. Le guide détaillé est dans docs/installation.md.
| Touche | Action |
|---|---|
| Ctrl/⌘ K | Palette de commandes et recherche d’archives |
| / | Rechercher dans la page |
| G puis D · A · J · P | Tableau de bord · Archives · Journal · Profil |
| N | Nouvelle archive (si le rôle le permet) |
| T | Thème clair ou sombre |
| ? | Aide des raccourcis |
| Rôle | Niveaux visibles | Peut aussi |
|---|---|---|
| Consultant | Public | Rechercher, prévisualiser, télécharger, vérifier l’intégrité |
| Agent d’archives | Public, Interne | Créer et modifier dans son périmètre |
| Administrateur | Public, Interne, Confidentiel | Consulter le journal d’audit, l’exporter, voir l’historique des accès |
| Superutilisateur technique | Tous | Administrer les référentiels et les comptes |
| Indicateur | Valeur |
|---|---|
| Tests automatisés | 406, exécutés en environ 20 s |
Vulnérabilités connues (pip-audit) | 0 |
| Politique de contenu | CSP sans unsafe-inline ; aucun CDN, police ou script tiers |
| CI | PostgreSQL 17 × Python 3.12 / 3.13, contrôles de déploiement, build des statiques, pip-audit |
| Accessibilité | Lien d’évitement, focus visible, graphiques décrits, palette au motif combobox, prefers-reduced-motion |
| Production | Statiques hachés et compressés, journaux console, sonde /healthz/ |
Les améliorations sont proposées dans l’application, où chaque utilisateur peut voter pour les priorités.
L’historique des versions est dans CHANGELOG.md.
| Document | Contenu |
|---|---|
docs/design-system.md | Charte « Sceau » : jetons, composants, algorithme du sceau, règles CSP |
docs/deployment-render.md | Déploiement Render, réalignement des comptes, diagnostic |
docs/architecture-final.md | Architecture et modèle de données |
docs/final-rbac-matrix.md | Matrice des droits par rôle et confidentialité |
docs/security-review.md | Revue de sécurité et risques résiduels |
docs/final-test-matrix.md | Couverture des tests |
docs/demo-script.md | Scénarios de démonstration |
Django 5.2 LTS · PostgreSQL 17 (recherche plein texte) · psycopg 3 · Pillow 13 · pypdf · segno · WhiteNoise · gunicorn · Django Templates · CSS et JavaScript sans dépendance · Fraunces, Geist et Geist Mono (SIL OFL, auto-hébergées) · GitHub Actions · Render.
Conçu et développé par Euloge Junior Mabiala (eulogep), projet académique de Génie Informatique réalisé pour C-Tech.
Les modalités de licence du code restent à définir avec C-Tech et l’établissement. Les polices sont distribuées sous SIL Open Font License 1.1 (licences dans static/fonts/).