Lecteur Markdown
BEAMREACTOR_HTACCESSES
Politique `.htaccess` de BeamReactor #
Cette documentation décrit la politique globale `.htaccess` du moteur BeamReactor.
Elle ne concerne pas un plugin en particulier, mais définit le contrat de sécurité entre Apache et le moteur.
BeamReactor repose sur un principe simple :
> Apache ne doit jamais être un chemin d’exécution.
---
1. Principe fondamental #
- Tout est interdit par défaut
- Seuls les fichiers explicitement statiques sont exposés
- Toute logique PHP est exécutée exclusivement via le point d’entrée du moteur
- Le filesystem n’est jamais une API
Si un fichier devient accessible par erreur, le modèle de sécurité est déjà compromis.
---
2. Règles globales pour `plugins/` #
Les plugins peuvent contenir des ressources statiques (images, JS, CSS), mais aucune logique exécutable.
`.htaccess` dans `plugins/` #
# Deny access to all files by default
Order Deny,Allow
Deny from all
# Allow images
<FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|ico)$">
Allow from all
</FilesMatch>
# Allow JavaScript files
<FilesMatch "\.js$">
Allow from all
</FilesMatch>
# Allow PHP-generated JavaScript
<FilesMatch "\.js.php$">
Allow from all
</FilesMatch>
# Optional: Allow CSS if necessary
<FilesMatch "\.css$">
Allow from all
</FilesMatch>
# Allow web fonts
<FilesMatch "\.(woff|woff2|ttf|eot)$">
Allow from all
</FilesMatch>
Notes importantes :
- Les fichiers `.php` ne sont jamais accessibles
- Les plugins sont appelés uniquement via `index.php?obj=...`
---
3. Politique pour `user/` #
Le répertoire `user/` contient des données runtime, jamais des endpoints.
`user/` #
IndexIgnore *
---
`user/backups/` #
Deny from all
Téléchargement uniquement via le moteur (ex. BeamReactor).
---
`user/conf/` #
Deny from all
Configurations sensibles.
---
`user/content/` #
IndexIgnore *
Contenu interprété par le moteur, jamais servi brut.
---
`user/data/` #
Deny from all
Inclut :
- pages 404
- documents HTML générés
- caches
Accès strictement interne.
---
`user/fonts/` #
IndexIgnore *
---
`user/gallery/` #
IndexIgnore *
Images uniquement, sans listing.
---
`user/skins/` #
IndexIgnore *
Assets de thèmes.
---
4. Répertoires cœur (interdiction totale) #
Ces répertoires ne doivent jamais être accessibles depuis le web :
Deny from all
- `modules/`
- `inc/`
- `lib/`
- `rss/`
Ils contiennent de la logique interne.
---
5. Racines statiques publiques #
Les fichiers sont accessibles, mais le listing est interdit :
IndexIgnore *
- `ui/`
- `javascript/`
---
6. Résumé du modèle de sécurité #
- Apache = serveur de fichiers statiques, rien de plus
- Un seul point d’entrée PHP
- Aucun accès direct = aucune surface d’attaque
- `.htaccess` est une ligne de défense critique
BeamReactor part du postulat suivant :
> Si Apache peut exécuter ou lire ce fichier, alors le moteur a déjà perdu.