E.S
Retour aux réalisations
TP 2026

AP — CyberNews

Site Web de veille cybersécurité développé en PHP/MySQL : consultation de news classées par categorie, fiches détaillées, sources externes et documents PDF associés.

Compétences mobilisées — Bloc 1

Support et mise à disposition de services informatiques

C1

Gérer le patrimoine informatique

  • C1.1 Recenser et identifier les ressources numériques
  • C1.6 Vérifier le respect des règles d'utilisation des ressources numériques
C3

Développer la présence en ligne de l'organisation

  • C3.1 Participer à la valorisation de l'image de l'organisation sur les médias numériques
  • C3.3 Participer a l'évolution d'un site Web exploitant les données de l'organisation
C5

Mettre a disposition des utilisateurs un service informatique

  • C5.1 Réaliser les tests d'integration et d'acceptation d'un service
  • C5.2 Déployer un service

Contexte

CyberNews est une réalisation d'atelier professionnel dont l'objectif est de presenter des actualités importantes en cybersécurité, avec un focus sur les données personnelles. Le site sert de support de veille : l'utilisateur consulte les informations par categorie, ouvre une fiche détaillée et accede aux sources externes ainsi qu'aux documents PDF conserves dans le projet.

Le dossier du projet contient une application PHP proceduralisee autour de plusieurs fichiers : une page d'accueil, une page détaillée de news, un menu dynamique, une connexion MySQL, une feuille de style, un logo, un dossier de documents PDF et un dump SQL. La base `esa_cybernewsbd` contient les tables `catégories` et `news`, reliees par une cle étrangère, afin d'organiser les actualités par themes.

Le contenu de veille reference plusieurs cas concrets : fuite de données chez Bouygues Telecom, attaques DDoS contre Glitz Paris, cyberattaque des lycees des Hauts-de-France, fuite Inovie Labosud, faille GLPI, Urssaf Pajemploi, CAF, ministere de l'Interieur, HubEE, sanctions CNIL, KeepCool, ministere des Sports, ANTS et Rockstar Games. Chaque entrée stocke un titre, un auteur, une date, un résumé, une source Web, un PDF source et une categorie.

Une attention particulière a ete portée à la sécurité applicative : validation de l'identifiant de news avec `FILTER_VALIDATE_INT`, requetes preparees pour charger une fiche, échappement des sorties HTML avec `htmlspecialchars`, ouverture securisee des liens externes avec `rel="noopener noreferrer"` et encodage `utf8mb4` pour la base de données. Le menu est genere dynamiquement depuis MySQL, ce qui permet d'ajouter des catégories ou des news sans modifier le HTML.

Environnement technologique

PHP 8.2 MySQL 8.3 Apache / environnement local mysqli HTML5 CSS3 phpMyAdmin UTF-8 / utf8mb4

Preuves

Captures et documents

obligatoire
Capture de la page CyberNews : menu dynamique des catégories, fiche détaillée d'une news, metadonnees, liens source et résumé.
CREATE TABLE IF NOT EXISTS `catégories` (
  `idCategorie` int NOT NULL AUTO_INCREMENT,
  `nomCategorie` varchar(38) NOT NULL,
  PRIMARY KEY (`idCategorie`)
);

CREATE TABLE IF NOT EXISTS `news` (
  `idNews` int NOT NULL AUTO_INCREMENT,
  `titreNews` varchar(255) NOT NULL,
  `auteurNews` varchar(38) NOT NULL,
  `dateNews` date NOT NULL,
  `resumeNews` text NOT NULL,
  `lienNews` varchar(255) NOT NULL,
  `pdfNews` varchar(255) NOT NULL,
  `categoriesNews` int NOT NULL,
  PRIMARY KEY (`idNews`),
  KEY `fk_Categorie` (`categoriesNews`)
);

ALTER TABLE `news`
  ADD CONSTRAINT `fk_Categorie`
  FOREIGN KEY (`categoriesNews`) REFERENCES `catégories` (`idCategorie`);
Modèle de données : catégories et news avec relation entre les deux tables.
$esaConnexion = mysqli_connect("localhost", "root", "", "esa_cybernewsbd");

if (!$esaConnexion) {
    die("La connexion à la base de données a echoue.");
}

mysqli_set_charset($esaConnexion, "utf8mb4");

$esaTableCategories = esaTrouverNomTable($esaConnexion, "esa_categorie", "catégories");
$esaTableNews = esaTrouverNomTable($esaConnexion, "esa_news", "news");
Connexion a MySQL, encodage utf8mb4 et détection des tables attendues.
$idNews = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);

$requeteNews = mysqli_prepare(
    $esaConnexion,
    "SELECT n.idNews, n.titreNews, n.auteurNews, n.dateNews, n.resumeNews, n.lienNews, n.pdfNews, c.nomCategorie
     FROM {$esaTableNews} AS n
     INNER JOIN {$esaTableCategories} AS c ON n.categoriesNews = c.idCategorie
     WHERE n.idNews = ?"
);

mysqli_stmt_bind_param($requeteNews, "i", $idNews);

echo htmlspecialchars($newsCourante['titreNews']);
Sécurisation de la fiche news : validation de l'ID, requête preparee et échappement HTML.

Détails techniques

$requeteCategories = mysqli_query(
    $esaConnexion,
    "SELECT idCategorie, nomCategorie FROM {$esaTableCategories} ORDER BY nomCategorie ASC"
);

$requeteNews = mysqli_prepare(
    $esaConnexion,
    "SELECT idNews, titreNews
     FROM {$esaTableNews}
     WHERE categoriesNews = ?
     ORDER BY dateNews DESC"
);
Menu dynamique : catégories chargees depuis la base, puis news associees a chaque categorie.
<h2>Présentation du site</h2>
<p>Ce site a pour objectif de vous presenter les news les plus importantes de ces derniers mois en matiere de cybersécurité.</p>
<p>Les news presentees traitent plus particulierement de la cybersécurité autour des données personnelles.</p>
<p>Chaque article propose une source externe et une version imprimable pour conserver l'information.</p>
Page d'accueil : présentation du site et objectif de veille cybersécurité.

Sécurité et bonnes pratiques

<a href="<?php echo htmlspecialchars($newsCourante['lienNews']); ?>" target="_blank" rel="noopener noreferrer">Consulter la source</a>
<a href="esa_news_pdf.php?id=<?php echo (int) $newsCourante['idNews']; ?>" target="_blank" rel="noopener noreferrer">Version PDF imprimable</a>
<a href="<?php echo htmlspecialchars($newsCourante['pdfNews']); ?>" target="_blank" rel="noopener noreferrer">Document source PDF</a>
Accès aux sources et aux documents PDF pour justifier chaque actualité de veille.
Catégories : Fuite de données, Attaques DDoS, Faille critique, Cybersécurité.

Exemples de news :
- Fuite de données chez Bouygues Telecom
- Attaques DDoS contre Glitz Paris
- Cyberattaque sur les lycees des Hauts-France
- Faille GLPI non patchee, 3 600 organisations francaises compromises
- Urssaf Pajemploi victime d'un vol massif de données
- Sanctions CNIL pour manquements de sécurité
- Fuite de données a l'ANTS
- Rockstar Games : fuite massive de 78,6 millions d'enregistrements internes
Exemples de catégories et de sujets présents dans le dump SQL du projet.