Audit API Platform

VérifiéSûr

Audite un projet API Platform existant pour vérifier les bonnes pratiques, sécurité, performances et configuration cohérente. Génère un rapport détaillé avec recommandations.

Spar Skills Guide Bot
DeveloppementIntermédiaire
2002/06/2026
Claude Code
#api-platform#audit#symfony#best-practices

Recommandé pour

Notre avis

Audite un projet API Platform existant et produit un rapport structuré sur les bonnes pratiques, la sécurité, les performances et la cohérence de configuration.

Points forts

  • Couverture complète des aspects critiques : configuration, sécurité, performances
  • Détection automatique des ressources et de leurs opérations
  • Production d'un rapport détaillé avec des scores et des recommandations

Limites

  • Nécessite que le projet soit structuré selon les conventions API Platform
  • Peut ne pas détecter les configurations personnalisées avancées
  • L'analyse de sécurité reste au niveau de la configuration, pas de test d'intrusion
Quand l'utiliser

Lors d'une revue de code ou avant une mise en production d'une API Platform pour s'assurer du respect des standards.

Quand l'éviter

Si le projet n'utilise pas API Platform ou nécessite une vérification de sécurité plus poussée avec des outils externes.

Analyse de sécurité

Sûr
Score qualité88/100

The skill performs a read-only audit of an API Platform project using standard developer tools (grep, composer, etc.). No destructive commands, network calls, or exfiltration are instructed. The risk is minimal.

Aucun point d'attention détecté

Exemples

Audit current API Platform project
Run the API Platform audit skill on the current project and produce a full report.
Audit specific API Platform project path
Audit the API Platform project located at /var/www/my-api and check for best practices.

name: api-platform:audit description: Audite un projet API Platform existant et produit un rapport de bonnes pratiques, performances et sécurité model: sonnet allowed-tools: [Read, Grep, Glob, Bash] version: 1.0.0 license: MIT

API Platform Audit

Audite un projet API Platform existant pour vérifier les bonnes pratiques, la sécurité, les performances et la cohérence de configuration.

Instructions à Exécuter

IMPORTANT : Exécute ce workflow étape par étape :

1. Détecter la configuration API Platform

  • Vérifier composer.json pour la version d'API Platform installée
  • Chercher la configuration dans config/packages/api_platform.yaml ou config/packages/api_platform.php
  • Identifier le format de configuration utilisé (attributs PHP, YAML, XML)

2. Inventorier les resources API

  • Chercher tous les fichiers avec #[ApiResource] via Grep
  • Chercher les configurations YAML/XML si utilisées
  • Pour chaque resource, noter :
    • Opérations exposées
    • Groupes de sérialisation
    • Filtres configurés
    • Configuration de sécurité
    • State providers/processors personnalisés

3. Audit des bonnes pratiques

Vérifier pour chaque resource :

Configuration :

  • [ ] Opérations explicitement déclarées (pas les opérations par défaut implicites)
  • [ ] Groupes de sérialisation configurés (read/write séparés)
  • [ ] Pagination configurée (pas de pagination désactivée sans raison)
  • [ ] Format de réponse cohérent (JSON-LD, JSON:API, HAL)

Sécurité :

  • [ ] Attribut security défini sur les opérations sensibles (POST, PUT, PATCH, DELETE)
  • [ ] Pas d'exposition de données sensibles (mots de passe, tokens, données internes)
  • [ ] Validation configurée sur les opérations d'écriture
  • [ ] CORS correctement configuré (nelmio_cors)
  • [ ] Rate limiting si exposé publiquement

Performances :

  • [ ] HTTP caching configuré (Cache-Control, ETag, Vary)
  • [ ] Eager loading pour éviter les requêtes N+1 (forceEager, fetchEager)
  • [ ] Index Doctrine sur les colonnes filtrées/triées
  • [ ] Pagination activée avec une taille de page raisonnable (pas de pagination_enabled: false sur de grandes collections)
  • [ ] Groupes de sérialisation limitant les données retournées

Architecture :

  • [ ] DTOs utilisés quand la représentation diffère de l'entité
  • [ ] State Providers/Processors pour la logique métier complexe
  • [ ] Pas de logique métier dans les entités Doctrine
  • [ ] Extensions Doctrine pour le filtrage global (soft delete, tenant)

4. Audit de la configuration globale

Vérifier dans config/packages/api_platform.yaml :

api_platform:
    title: 'Mon API'                    # Titre défini
    version: '1.0.0'                    # Version définie
    formats:                            # Formats explicites
        jsonld: ['application/ld+json']
    defaults:
        pagination_items_per_page: 30   # Pagination par défaut raisonnable
        pagination_client_enabled: true # Contrôle client de la pagination
    mapping:
        paths: ['%kernel.project_dir%/src/Entity']

5. Audit des tests

  • Chercher les tests API dans tests/ avec Grep
  • Vérifier la couverture de tests :
    • [ ] Tests pour chaque resource exposée
    • [ ] Tests de validation
    • [ ] Tests de sécurité (accès non autorisé)
    • [ ] Tests de filtres

6. Audit des dépendances

  • Vérifier les versions des packages API Platform dans composer.lock
  • Identifier les versions obsolètes
  • Vérifier la compatibilité entre packages

7. Produire le rapport d'audit

Générer un rapport structuré :

## Rapport d'audit API Platform

### Résumé
- Resources API : {nombre}
- Opérations totales : {nombre}
- Score global : {score}/100

### Resources auditées
| Resource | Opérations | Sécurité | Sérialisation | Filtres | Tests |
|----------|-----------|----------|---------------|---------|-------|
| Product  | 6/6       | OK       | OK            | 3       | Oui   |
| User     | 4/6       | WARN     | MISSING       | 0       | Non   |

### Problèmes critiques
1. [CRITIQUE] Resource User sans sécurité sur POST
2. [CRITIQUE] Mot de passe exposé dans la sérialisation User

### Avertissements
1. [WARN] Pas de groupes de sérialisation sur Product
2. [WARN] Pagination désactivée sur LargeCollection

### Recommandations
1. Ajouter security: "is_granted('ROLE_ADMIN')" sur User POST
2. Ajouter #[Groups(['user:read'])] et exclure le mot de passe
3. Configurer le HTTP caching pour les resources en lecture seule

### Couverture de tests
- Resources testées : {x}/{total}
- Tests manquants : {liste}

### Versions
- api-platform/core: {version} (dernière: {dernière})
- symfony/framework-bundle: {version}

Critères d'audit

Score de sécurité (sur 40)

| Critère | Points | |---------|--------| | Security sur opérations d'écriture | 15 | | Pas de données sensibles exposées | 10 | | Validation sur les inputs | 10 | | CORS configuré | 5 |

Score de qualité (sur 30)

| Critère | Points | |---------|--------| | Groupes de sérialisation | 10 | | Opérations explicites | 10 | | DTOs quand nécessaire | 5 | | Documentation OpenAPI | 5 |

Score de performance (sur 15)

| Critère | Points | |---------|--------| | HTTP caching | 5 | | Pagination configurée | 5 | | Pas de N+1 queries | 5 |

Score de tests (sur 15)

| Critère | Points | |---------|--------| | Couverture des resources | 10 | | Tests de sécurité | 5 |

Notes

  • L'audit est en lecture seule, aucune modification n'est effectuée
  • Le rapport peut être sauvegardé dans docs/audit/ si demandé
  • Les scores sont indicatifs et basés sur les bonnes pratiques API Platform
  • Relancer l'audit après corrections pour vérifier l'amélioration
Skills similaires