Rapport d'Audit — Re-info.fr

Audit complet du site à la date du 4 juillet 2026 — C:\SITE-COPIE

5
Critique
14
Majeur
8
Mineur
14
Suggestion
41
Total
Fichiers HTML31
Fichiers PHP1
Lignes CSS~1025
Lignes JS (externe)~55
Lignes JS (inline dupliqué)~1000
Scripts shell2
Templates2

1. Problèmes Critiques

Critique

Injection d'en-têtes (Header Injection) dans le formulaire de contact

contact.php ligne 69

$headers = "From: $email\r\nReply-To: $email"; — L'email utilisateur est inséré directement dans l'en-tête From: sans validation suffisante. Un attaquant peut injecter des en-têtes supplémentaires via \r\n pour du spam relayé. Utiliser filter_var($email, FILTER_VALIDATE_EMAIL) et FILTER_SANITIZE_EMAIL avant toute utilisation dans les en-têtes.

Critique

Navigation dropdown incohérente — contact.php a 12 éléments au lieu de 16

contact.php lignes 21-36

Le menu déroulant "Personnalités" de contact.php contient seulement 12 liens. Manquent : idriss-aberkane.html, caroline-galacteros.html, dieudonne.html, xavier-poussard.html. Toutes les autres pages en ont 16.

Critique

Duplication massive de code JavaScript inline

Tous les fichiers HTML/PHP

updateDate() (~9 lignes) est dupliqué textuellement dans les 31 fichiers. sourceNames (~30 lignes) est dupliqué dans ~14 fichiers. Soit près de 700 lignes de code dupliqué. À externaliser dans des fichiers .js communs.

Critique

Entités HTML dans le code JavaScript (non interprétées)

Environ 14 fichiers (tous sauf index.html, a-propos.html, contact.php)

Les chaînes de mois dans le script updateDate() utilisent "février", "août", "décembre" au lieu des caractères littéraux "février", "août", "décembre". Les entités HTML ne sont pas interprétées dans les chaînes JavaScript.

Critique

Footer différent/absent dans contact.php

contact.php lignes 103-105

Le footer est simplifié (© 2026 Re-info.fr) sans la section .footer-sources présente dans toutes les autres pages. Incohérence majeure de design.

2. Problèmes Majeurs

Majeur

Sélecteurs CSS dupliqués .src-tocsin et .src-gptv

css/style.css lignes 403-407 et 418-422

.news-card.src-tocsin est défini deux fois avec des couleurs différentes (orange puis rouge). .news-card.src-gptv aussi (jaune puis vert). La deuxième définition écrase la première. Supprimer les doublons.

Majeur

Titre de page incohérent pour medias-alternatifs.html

medias-alternatifs.html ligne 6

<title>Médias Alternatifs - Site d'Information</title> — ne contient pas "Re-info.fr" contrairement à toutes les autres pages du site.

Majeur

Aucune balise meta description sur aucune page

Tous les fichiers HTML/PHP

Absence de <meta name="description" content="..."> sur l'ensemble du site. Impact SEO critique.

Majeur

Aucune balise Open Graph / Twitter Card

Tous les fichiers HTML/PHP

Pas de og:title, og:description, og:image, ni de twitter:card. Le site ne peut pas être correctement partagé sur les réseaux sociaux.

Majeur

Absence de token CSRF sur le formulaire de contact

contact.php

Aucun token CSRF n'est utilisé. Le formulaire est vulnérable aux attaques CSRF.

Majeur

Absence de menu mobile/responsive

css/style.css

Seulement 2 media queries minimales. Pas de menu hamburger. La navigation devient illisible sur écran étroit.

Majeur

Script de couleurs aléatoires dupliqué dans 3 pages + case-colors.js

personnalites.html, dossiers-speciaux.html, medias-alternatifs.html

Chaque page a son propre script inline qui colore les .news-tag avec des couleurs aléatoires, alors que case-colors.js est censé gérer la colorisation. Code fragmenté et dupliqué.

Majeur

Google Fonts chargée sans display=swap optimal

Tous les fichiers, balise <head>

La ressource Google Fonts utilise &amp;display=swap mais pourrait être optimisée et préchargée. Le texte peut être invisible pendant le chargement.

Majeur

<ol> utilisé au lieu de <ul> pour les grilles de cartes

personnalites.html, dossiers-speciaux.html, pages de détail

Les listes de cartes utilisent <ol> (ordonnées) mais ne sont pas numérotées. Devrait être <ul> pour la sémantique HTML.

Majeur

Images favicon sans texte alternatif descriptif

Tous les fichiers avec favicon

Tous les <img class="favicon"> ont alt="". Correct pour des images purement décoratives, mais un texte court décrivant la source améliorerait l'accessibilité.

Majeur

Pas de aria-label sur la navigation

Tous les fichiers

Le <nav> principal n'a pas de aria-label pour le différencier d'autres éléments de navigation potentiels.

Majeur

Absence de sitemap.xml et robots.txt

Racine du site

Aucun fichier sitemap.xml ni robots.txt n'est présent dans le répertoire racine, ce qui limite le référencement.

Majeur

src-tvl utilisé par défaut pour TOUTES les personnalités

personnalites.html lignes 55-214

Toutes les 16 cartes personnalités utilisent class="news-card src-tvl", même celles qui ne sont pas associées à TV Libertés. Les couleurs et favicons ne reflètent pas la source réelle de chaque personnalité.

3. Problèmes Mineurs

Mineur

Déclaration font-family répétée ~30 fois dans le CSS

css/style.css

font-family: 'Playfair Display', 'Roboto', ... apparaît dans environ 30 sélecteurs. L'héritage CSS suffirait pour la plupart.

Mineur

color: #000000 en dur ~25 fois

css/style.css

La couleur noire est définie en dur répétitivement au lieu d'utiliser une variable CSS --text.

Mineur

border: 1px solid #000 en dur ~12 fois

css/style.css

La bordure noire est répétée dans de nombreux sélecteurs. À factoriser avec une variable CSS.

Mineur

Code CSS inutilisé

css/style.css

Plusieurs sélecteurs ne sont jamais utilisés dans le HTML : .logo-white, .hero-illustration, .page-banner, .home-icon, @keyframes floatStar, .hero-date.

Mineur

Pas de lazy-loading pour les contenus

Tous les fichiers

Seuls les favicons utilisent loading="lazy". Aucun autre contenu n'est en chargement différé.

Mineur

Pas de cache-busting sur les ressources CSS/JS

Tous les fichiers

Les URLs des ressources (style.css, case-colors.js, bg-pattern.js) n'ont pas de paramètre de version.

Mineur

Espaces vides et doubles lignes dans le code source

Plusieurs fichiers HTML

Lignes vides excessives dans le code source de plusieurs pages (ex: lignes 44-45 dans a-propos.html, personnalites.html, dossiers-speciaux.html).

Mineur

Fichier RAPPORT.md accessible mais non référencé

Racine du site

Le fichier RAPPORT.md est dans le répertoire public mais n'est lié nulle part sur le site.

4. Suggestions

Suggestion

Externaliser updateDate() dans scripts/date.js

Tous les fichiers

Créer un fichier scripts/date.js commun pour éviter la duplication dans les 31 fichiers.

Suggestion

Externaliser sourceNames dans scripts/sources.js

~14 fichiers de détail

Créer un fichier scripts/sources.js pour factoriser le script d'ajout des sources.

Suggestion

Uniformiser la navigation dropdown (16 éléments partout)

contact.php

Mettre à jour le dropdown de contact.php pour qu'il contienne les 16 personnalités comme toutes les autres pages.

Suggestion

Ajouter un sitemap.xml et robots.txt

Racine du site

Créer ces fichiers pour améliorer le référencement.

Suggestion

Ajouter un CAPTCHA ou rate-limiting sur le formulaire

contact.php

Le honeypot existant est un bon début, mais un CAPTCHA ou une limite de taux renforcerait la sécurité.

Suggestion

Revoir la palette CSS pour utiliser les variables systématiquement

css/style.css

Les variables --text, --bg, --border existent mais sont rarement utilisées. La plupart des couleurs sont en dur.

Suggestion

Ajouter des media queries pour tablettes (768px, 1024px)

css/style.css

Seulement 2 breakpoints, aucun pour les tablettes. La mise en page peut être désastreuse sur iPad.

Suggestion

Implémenter un menu hamburger pour mobile

css/style.css + HTML

La barre de navigation est illisible sur les petits écrans. Un menu hamburger est indispensable.

Suggestion

Utiliser aria-current="page" pour la page active

Navigation de toutes les pages

Remplacer l'attribut class="active" par aria-current="page" pour une meilleure accessibilité.

Suggestion

Ajouter role="navigation" et aria-label sur <nav>

Tous les fichiers

Améliorer l'accessibilité pour les lecteurs d'écran.

Suggestion

Ajouter des meta OG et Twitter Cards

Tous les fichiers

Permettre un partage correct sur les réseaux sociaux avec image, titre et description.

Suggestion

Vérifier la validité des liens externes

Tous les fichiers

Utiliser un outil de vérification de liens pour confirmer que tous les liens YouTube, Acast, Dailymotion, etc. sont valides.

Suggestion

Uniformiser contact.php avec le même footer que les autres pages

contact.php

Ajouter la section .footer-sources à contact.php pour la cohérence visuelle.

Suggestion

Créer une page 404.html personnalisée

Racine du site

Une page d'erreur 404 sur le thème du site améliore l'expérience utilisateur.

Suggestion

Sécuriser le dropdown contact.php avec les scripts

contact.php, template-personnalites.html

Les pages contact.php et medias-alternatifs.html n'ont pas le même jeu de scripts que les templates. Uniformiser les inclusions de scripts (updateDate, sourceNames, case-colors, bg-pattern).

5. Résumé par Fichier

FichierProblèmesDétail
contact.php5Header injection, dropdown incomplet (12/16), footer manquant, pas de CSRF, pas de CAPTCHA
css/style.css6Doublons src-tocsin/src-gptv, code inutilisé, font-family répété, couleurs en dur, pas de responsive
Tous les HTML4Pas de meta description, pas d'OG, pas de robots.txt/sitemap, pas d'aria-label
31 fichiers3updateDate() dupliqué, entités HTML dans JS
14 fichiers1sourceNames dupliqué
personnalites.html2Script couleurs dupliqué, <ol> au lieu de <ul>
medias-alternatifs.html2Titre incohérent, script couleurs dupliqué
dossiers-speciaux.html2Script couleurs dupliqué, <ol> au lieu de <ul>