Lecteur Markdown
BEAMREACTOR_HEADERHANDLER
HeaderHandler #
Gestion unifiée des headers HTTP pour BeamReactor.
Namespace: `App\Security`
Version: 2.0.0
Auteur: Treveur Bretaudière
Vue d'ensemble #
`HeaderHandler` centralise la gestion des headers HTTP : headers de sécurité, Content Security Policy (CSP), cache control, et génération des `<head>` HTML. Toutes les méthodes sont statiques.
Méthodes principales #
setHeader #
Envoie un header HTTP unique.
HeaderHandler::setHeader(string $headerString, bool $replaceSimilar = null, int $responseCode = null): bool
Paramètres:
- `$headerString` — Le header complet (ex: `'Content-Type: text/html'`)
- `$replaceSimilar` — Remplacer un header similaire existant
- `$responseCode` — Code HTTP optionnel (301, 404, etc.)
Retour: `true` si envoyé, `false` si headers déj� envoyés ou chaîne vide.
setHeaders #
Envoie plusieurs headers, incluant les headers permanents.
HeaderHandler::setHeaders(array $headerList = []): void
Raccourcis supportés:
- `'NOCACHE'` — Headers de non-cache complets
- `'LAST_MODIFIED'` — Header Last-Modified avec date courante
- `'UNCHECK'` — Cache-Control post-check/pre-check
Format tableau:
HeaderHandler::setHeaders([
'NOCACHE',
[
'header' => 'Location: /redirect',
'replace' => true,
'responseCode' => 301
]
]);
addPermHeader #
Ajoute un header permanent envoyé � chaque appel de `setHeaders()`.
HeaderHandler::addPermHeader(string $headerString): void
clearPermHeaders #
Supprime tous les headers permanents.
HeaderHandler::clearPermHeaders(): void
Headers de sécurité #
sendSecurityHeaders #
Envoie l'ensemble des headers de sécurité.
HeaderHandler::sendSecurityHeaders(string $charset = 'UTF-8', bool $includeHsts = true, bool $includeCsp = true): void
Headers envoyés:
- `Content-Type`
- `X-Content-Type-Options: nosniff`
- `X-Frame-Options: SAMEORIGIN`
- `Referrer-Policy: strict-origin-when-cross-origin`
- `Permissions-Policy: geolocation=(), microphone=(), camera=()`
- `Strict-Transport-Security` (HTTPS uniquement)
- `Content-Security-Policy`
sendNoCacheHeaders #
Envoie les headers de non-cache.
HeaderHandler::sendNoCacheHeaders(): void
Headers envoyés:
- `Cache-Control: no-store, no-cache, must-revalidate, max-age=0`
- `Pragma: no-cache`
- `Expires: Wed, 03 Nov 1999 12:21:14 GMT`
- `Last-Modified: [date courante]`
Content Security Policy (CSP) #
setCspDirective #
Définit une directive CSP complète.
HeaderHandler::setCspDirective(string $directive, array $values): void
Exemple:
HeaderHandler::setCspDirective('script-src', ["'self'", "https://cdn.example.com"]);
addToCspDirective #
Ajoute des valeurs � une directive existante.
HeaderHandler::addToCspDirective(string $directive, string|array $values): void
Exemple:
HeaderHandler::addToCspDirective('img-src', 'https://images.example.com');
setCspPolicyRaw #
Remplace la CSP entière par une chaîne brute (support legacy).
HeaderHandler::setCspPolicyRaw(string $policy): void
buildCspPolicy #
Construit et retourne la chaîne CSP complète.
HeaderHandler::buildCspPolicy(): string
Configuration #
setHstsMaxAge #
Définit la durée HSTS en secondes (défaut: 31536000 = 1 an).
HeaderHandler::setHstsMaxAge(int $seconds): void
Génération HTML (legacy BeamReactor) #
sdphead #
Génère le `<head>` HTML standard avec headers de sécurité.
HeaderHandler::sdphead(
string $doctitle,
array &$cfg,
string $cfg['skin'],
string $charset = 'UTF-8',
string $headdata = ''
): void
htmhead #
Comme `sdphead()`, avec contrôle de cache conditionnel.
HeaderHandler::htmhead(
string $doctitle,
array &$cfg,
string $cfg['skin'],
string $obj,
string $charset = 'UTF-8',
string $headdata = ''
): void
modhead #
Headers pour contenu AJAX/dynamique.
HeaderHandler::modhead(string $charset = 'UTF-8'): void
apihead #
Headers pour API JSON avec support CORS optionnel.
HeaderHandler::apihead(bool $cors = false, string|array $allowedOrigins = '*', bool $handlePreflight = true, string|array $allowedHeaders = 'Content-Type'): void
closedoc #
Ferme le document HTML.
HeaderHandler::closedoc(): void
Directives CSP par défaut #
| Directive | Valeurs |
|-----------|---------|
| `default-src` | `'self'` |
| `script-src` | `'self'` `'unsafe-inline'` `'unsafe-eval'` |
| `style-src` | `'self'` `'unsafe-inline'` |
| `img-src` | `'self'` `data:` `https:` |
| `font-src` | `'self'` `data:` |
| `connect-src` | `'self'` + hosts whitelistés |
| `frame-ancestors` | `'self'` |
Exemple d'utilisation #
use App\Security\HeaderHandler;
// Autoriser un CDN pour les scripts
HeaderHandler::addToCspDirective('script-src', 'https://cdn.example.com');
// Générer la page
HeaderHandler::htmhead('Accueil', $cfg, $cfg['skin'], $obj);
// ... contenu ...
HeaderHandler::closedoc();