Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:26:50 +08:00
commit 52f3b34ffe
4 changed files with 274 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
{
"name": "leapmultix-skill-auditing-security",
"description": "Skill auditing-security from LeapMultix",
"version": "1.0.0",
"author": {
"name": "Julien LE SAUX",
"email": "contact@jls42.org"
},
"skills": [
"./skills"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# leapmultix-skill-auditing-security
Skill auditing-security from LeapMultix

45
plugin.lock.json Normal file
View File

@@ -0,0 +1,45 @@
{
"$schema": "internal://schemas/plugin.lock.v1.json",
"pluginId": "gh:jls42/leapmultix:leapmultix-marketplace/skills/auditing-security",
"normalized": {
"repo": null,
"ref": "refs/tags/v20251128.0",
"commit": "a8d26e92a02c51f11d531575c5bdfdc33a9d6d6e",
"treeHash": "a97e01cec86f9cf0fd2ac8edec3bff70c5515554c2b3390b94323dcd6cc2aefd",
"generatedAt": "2025-11-28T10:19:11.097990Z",
"toolVersion": "publish_plugins.py@0.2.0"
},
"origin": {
"remote": "git@github.com:zhongweili/42plugin-data.git",
"branch": "master",
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
},
"manifest": {
"name": "leapmultix-skill-auditing-security",
"description": "Skill auditing-security from LeapMultix",
"version": "1.0.0"
},
"content": {
"files": [
{
"path": "README.md",
"sha256": "21f3379ee859772f802d7a1580ceca4ce173d4a49009e2be53e3e11e899213d9"
},
{
"path": ".claude-plugin/plugin.json",
"sha256": "16f83d5810b56faf1341310b58d0187fb66600a81038864876bef27a1fd54fe1"
},
{
"path": "skills/auditing-security/SKILL.md",
"sha256": "17e064d7336d2e70988cf3ad28133cf2a96fcbd922f1e464519a89df30b997d3"
}
],
"dirSha256": "a97e01cec86f9cf0fd2ac8edec3bff70c5515554c2b3390b94323dcd6cc2aefd"
},
"security": {
"scannedAt": null,
"scannerVersion": null,
"flags": []
}
}

View File

@@ -0,0 +1,214 @@
---
name: auditing-security
description: Audits application security (XSS, CSP, vulnerable dependencies, CORS). Use before releases, after adding dependencies, or modifying security-utils.js
allowed-tools: Read, Grep, Glob, Bash, WebSearch
---
# Security Audit
Audite la sécurité de l'application web selon standards OWASP et best practices.
## Table des matières
- [Quand utiliser](#quand-utiliser)
- [Domaines de sécurité](#domaines-de-sécurité)
- [Checklist sécurité](#checklist-sécurité)
- [Outils d'audit](#outils-daudit)
- [En cas de doute](#en-cas-de-doute)
## Quand utiliser
- Avant chaque release en production
- Après ajout/mise à jour dépendances npm
- Modifications de `security-utils.js`
- Warnings eslint-plugin-security
- Avant commit manipulant HTML dynamique
- Ajout de scripts externes (CDN, analytics)
## Domaines de sécurité
### 1. XSS (Cross-Site Scripting) Prevention
**Règle absolue : Utiliser security-utils.js**
Trouve security-utils.js pour voir fonctions disponibles :
- `appendSanitizedHTML()` - Insérer HTML dynamique
- `createSafeElement()` - Créer élément avec contenu sécurisé
- `setSafeMessage()` - Définir texte (pas HTML)
**Dangers :**
- `innerHTML` avec user input → XSS
- Fonctions d'exécution dynamique avec données externes
- Event handlers depuis user input
**Exceptions sécurisées :**
- `innerHTML = ''` (nettoyage)
- `getTranslation()` output (contenu interne)
### 2. Content Security Policy (CSP)
**Principe : Meta tag CSP dans index.html**
Examine index.html pour voir configuration CSP actuelle.
**Baseline restrictive :**
- `default-src 'self'`
- Pas de `'unsafe-eval'` dans script-src
- `'unsafe-inline'` limité au strict nécessaire
- `frame-ancestors 'none'` pour prévenir clickjacking
**Scripts externes :**
- Toujours `crossorigin="anonymous"`
- Integrity hashes pour bibliothèques statiques
- PAS d'integrity pour analytics (auto-update)
- Documenter exceptions avec commentaires
### 3. Dependency Vulnerabilities
**Commandes audit :**
```bash
npm audit # Scan vulnérabilités
npm audit --json # Rapport détaillé
npm audit fix # Fix auto (patch/minor)
npm audit fix --force # Fix breaking (attention!)
```
**Niveaux de sévérité :**
- **Critical/High** : Fix immédiatement avant release
- **Moderate** : Fix dans sprint suivant
- **Low** : Monitorer, fix si possible
**Vérifier :**
- Pas de dépendances deprecated
- Versions à jour (pas trop anciennes)
- Licences compatibles
### 4. HTTPS et Mixed Content
**Vérifier :**
- HTTPS obligatoire en production
- Pas de resources HTTP (mixed content)
- Redirection HTTP → HTTPS
- HSTS header
Examine configuration serveur ou CDN.
### 5. Secrets et Credentials
**Règles :**
- **JAMAIS** committer secrets (API keys, tokens, passwords)
- **JAMAIS** stocker passwords en LocalStorage
- Utiliser variables d'environnement
- .gitignore pour fichiers sensibles (.env, credentials.json)
**Vérifier :**
- Pas de secrets hardcodés dans code
- .env dans .gitignore
- Terraform state pas committé
### 6. LocalStorage Security
**Données sensibles :**
- **JAMAIS** tokens d'authentification
- **JAMAIS** passwords ou PII
- OK pour préférences utilisateur non sensibles
**Vérifier :**
- storage.js utilise localStorage correctement
- Pas de données sensibles stockées
- Données validées avant lecture
## Checklist sécurité
- [ ] Tous `innerHTML` utilisent `appendSanitizedHTML()` ou justifiés
- [ ] Pas de fonctions d'exécution dynamique avec données externes
- [ ] Meta tag CSP présent dans index.html
- [ ] `crossorigin="anonymous"` sur scripts externes
- [ ] `npm audit` sans Critical/High
- [ ] Pas de secrets hardcodés
- [ ] Pas de données sensibles en LocalStorage
- [ ] HTTPS en production
- [ ] Pas de mixed content
- [ ] Tests sécurité passent
## Outils d'audit
**ESLint Security :**
```bash
npm run lint # Inclut eslint-plugin-security
```
**Dependency Scan :**
```bash
npm audit
```
**Lighthouse Security Audit :**
- Lance Chrome DevTools → Lighthouse
- Vérifie section Security
- Score doit être 100
**OWASP ZAP (optionnel) :**
- Scan automatisé pour vulnérabilités web
- Tests de pénétration
## En cas de doute
**Source :** security-utils.js + CLAUDE.md
**Fichiers clés :**
1. `js/security-utils.js` - Fonctions sécurité du projet
2. `eslint.config.js` - Règles security ESLint
3. `index.html` - Configuration CSP
4. `CLAUDE.md` - Guidelines sécurité
**Règles absolues :**
1. TOUJOURS utiliser security-utils.js pour manipulation DOM
2. TOUJOURS audit avant release (`npm audit`)
3. JAMAIS `innerHTML` avec user input direct
4. JAMAIS stocker données sensibles en LocalStorage
5. JAMAIS scripts externes sans `crossorigin="anonymous"`
**Workflow minimal avant commit :**
```bash
npm run lint # ESLint security rules
npm audit # Dependency check
npm test # Security tests
```
**Workflow complet avant release :**
```bash
npm run verify # Full quality gate
npm audit --audit-level=moderate # Dependency audit
# Lighthouse security audit
# Review index.html CSP config
```
**Red flags (arrêter immédiatement) :**
- Fonctions d'exécution dynamique avec données externes
- `innerHTML = userInput`
- Tokens/passwords en LocalStorage
- npm audit Critical/High
- Scripts CDN sans crossorigin