docs: ajout section sécurité au README
This commit is contained in:
1 parent
6bf96beaed
commit
bac3cfeb4b
1 file changed
+12
@@ -71,6 +71,18 @@ php database/migrate.php
|
||||
bash tests/curl.sh
|
||||
```
|
||||
|
||||
## Sécurité
|
||||
|
||||
Éléments de sécurité implémentés dans l'API :
|
||||
|
||||
- **Injection SQL** : toutes les requêtes avec paramètres utilisent des requêtes préparées PDO (`prepare()` + `execute()`) dans `src/LinkRepository.php`, jamais de concaténation de variables dans le SQL.
|
||||
- **Validation des entrées** : champs obligatoires vérifiés, `trim()` systématique, et validation de `link_url` via `FILTER_VALIDATE_URL` (`src/LinkController.php`).
|
||||
- **Pas de fuite d'informations** : toute erreur (base, rendu) renvoie une réponse 500 générique `Erreur interne du serveur.` sans stack trace ni détail (`public/index.php`). `display_errors` n'est pas activé.
|
||||
- **Exposition minimale au web** : le DocumentRoot Apache (Docker) pointe vers `public/` uniquement ; `src/`, `database/` et la base SQLite ne sont pas servis publiquement. Le `.htaccess` réécrit toute requête vers `index.php`.
|
||||
- **CORS restreint** : méthodes limitées à `GET, POST, PUT, DELETE, OPTIONS` et en-têtes à `Content-Type` (`public/index.php`).
|
||||
- **Base hors de l'image Docker** : `*.sqlite` est exclu via `.dockerignore` et stocké dans le volume `db-data`, pas dans les layers de l'image.
|
||||
- **Typage strict** : `declare(strict_types=1)` dans tous les fichiers PHP, paramètres et retours typés.
|
||||
|
||||
## Docker
|
||||
|
||||
### Lancement
|
||||
|
||||
Reference in new issue
Block a user