Paillasse/portail/app/Http/Controllers/RapportCspController.php

32 lines
1 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
/**
* Reçoit les violations de CSP envoyées par les navigateurs : c'est le seul
* moyen de savoir qu'une page casse chez un élève. Seuls quelques champs
* sont gardés, tronqués, sans la chaîne de requête des URL.
*/
class RapportCspController extends Controller
{
public function __invoke(Request $request): Response
{
$rapport = json_decode($request->getContent(), true)['csp-report'] ?? null;
if (is_array($rapport)) {
Log::warning('Violation CSP', [
'page' => Str::limit(strtok((string) ($rapport['document-uri'] ?? ''), '?'), 200),
'directive' => Str::limit((string) ($rapport['violated-directive'] ?? $rapport['effective-directive'] ?? ''), 100),
'bloque' => Str::limit(strtok((string) ($rapport['blocked-uri'] ?? ''), '?'), 200),
]);
}
return response()->noContent();
}
}