En vous promenant sur Beamreactor, nous stockons votre IP 48h pour des raisons de sécurité.

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.

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();
de en fr