Lecteur Markdown

Knowledge Base › BEAMREACTOR_HEADERHANDLER

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.

php
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.

php
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:

php
HeaderHandler::setHeaders([
	'NOCACHE',
	[
		'header' => 'Location: /redirect',
		'replace' => true,
		'responseCode' => 301
	]
]);

addPermHeader #

Ajoute un header permanent envoyé � chaque appel de setHeaders().

php
HeaderHandler::addPermHeader(string $headerString): void

clearPermHeaders #

Supprime tous les headers permanents.

php
HeaderHandler::clearPermHeaders(): void

Headers de sécurité #

sendSecurityHeaders #

Envoie l'ensemble des headers de sécurité.

php
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.

php
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.

php
HeaderHandler::setCspDirective(string $directive, array $values): void

Exemple:

php
HeaderHandler::setCspDirective('script-src', ["'self'", "https://cdn.example.com"]);

addToCspDirective #

Ajoute des valeurs � une directive existante.

php
HeaderHandler::addToCspDirective(string $directive, string|array $values): void

Exemple:

php
HeaderHandler::addToCspDirective('img-src', 'https://images.example.com');

setCspPolicyRaw #

Remplace la CSP entière par une chaîne brute (support legacy).

php
HeaderHandler::setCspPolicyRaw(string $policy): void

buildCspPolicy #

Construit et retourne la chaîne CSP complète.

php
HeaderHandler::buildCspPolicy(): string

Configuration #

setHstsMaxAge #

Définit la durée HSTS en secondes (défaut: 31536000 = 1 an).

php
HeaderHandler::setHstsMaxAge(int $seconds): void

Génération HTML (legacy BeamReactor) #

sdphead #

Génère le <head> HTML standard avec headers de sécurité.

php
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.

php
HeaderHandler::htmhead(
	string $doctitle,
	array &$cfg,
	string $cfg['skin'],
	string $obj,
	string $charset = 'UTF-8',
	string $headdata = ''
): void

modhead #

Headers pour contenu AJAX/dynamique.

php
HeaderHandler::modhead(string $charset = 'UTF-8'): void

apihead #

Headers pour API JSON avec support CORS optionnel.

php
HeaderHandler::apihead(bool $cors = false, string|array $allowedOrigins = '*', bool $handlePreflight = true, string|array $allowedHeaders = 'Content-Type'): void

closedoc #

Ferme le document HTML.

php
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 #

php
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();