security: SRI Font Awesome, CSP restrictions, remove X-XSS-Protection, rate limiting

This commit is contained in:
2026-07-27 09:15:20 +04:00
parent ddd82fdff6
commit 7cbb7334f0
11 changed files with 186 additions and 135 deletions
+27 -20
View File
@@ -24,26 +24,33 @@ $currentSearchPage = validatePageNumber($_GET['page'] ?? 1);
$isTagSearch = !empty($query) && substr($query, 0, 1) === '#';
$searchTag = $isTagSearch ? substr($query, 1) : '';
// Rechercher les vidéos via l'API PeerTube si une requête est soumise
$searchResults = !empty($query) ? searchVideos($query, COUNT_VIDEO_SEARCH) : [];
// Définir le nombre total de résultats
$resultsCount = count($searchResults);
// Calculer le nombre total de pages
$totalPages = ceil($resultsCount / VIDEOS_PER_PAGE);
// S'assurer que la page actuelle est valide
$currentSearchPage = min($currentSearchPage, max(1, $totalPages));
// Calculer les indices de début et de fin pour la page actuelle
$startIndex = ($currentSearchPage - 1) * VIDEOS_PER_PAGE;
$endIndex = min($startIndex + VIDEOS_PER_PAGE, $resultsCount);
// Extraire les vidéos pour la page actuelle
// Rechercher les vidéos via l'API PeerTube si une requête est soumise.
// La pagination est déléguée à l'API (paramètre start) : chaque page ne
// récupère que VIDEOS_PER_PAGE vidéos et $resultsCount reçoit le total réel.
$resultsCount = 0;
$currentPageVideos = [];
if ($resultsCount > 0) {
$currentPageVideos = array_slice($searchResults, $startIndex, VIDEOS_PER_PAGE);
$totalPages = 1;
if (!empty($query)) {
$currentPageVideos = searchVideos(
$query,
VIDEOS_PER_PAGE,
($currentSearchPage - 1) * VIDEOS_PER_PAGE,
$resultsCount
);
$totalPages = max(1, (int) ceil($resultsCount / VIDEOS_PER_PAGE));
// Page demandée au-delà de la dernière : se replacer sur la dernière page valide
if ($currentSearchPage > $totalPages) {
$currentSearchPage = $totalPages;
$currentPageVideos = searchVideos(
$query,
VIDEOS_PER_PAGE,
($currentSearchPage - 1) * VIDEOS_PER_PAGE,
$resultsCount
);
// Le total a pu changer (ex. API en échec sur un start trop élevé)
$totalPages = max(1, (int) ceil($resultsCount / VIDEOS_PER_PAGE));
}
}
?>
@@ -61,7 +68,7 @@ if ($resultsCount > 0) {
<link rel="canonical" href="<?php echo getBaseUrl() . '/recherche.php'; ?>">
<?php endif; ?>
<link rel="stylesheet" href="css/styles.css?v=<?php echo filemtime('css/styles.css'); ?>">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css" integrity="sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw==" crossorigin="anonymous">
<!-- Favicons -->
<link rel="apple-touch-icon" sizes="180x180" href="img/apple-touch-icon.png">