Markdown Reader
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-TypeX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINReferrer-Policy: strict-origin-when-cross-originPermissions-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=0Pragma: no-cacheExpires: Wed, 03 Nov 1999 12:21:14 GMTLast-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();