E.S
Retour aux realisations
TP 2026

AP — CyberNews

Site Web de veille cybersecurite developpe en PHP/MySQL : consultation de news classees par categorie, fiches detaillees, sources externes et documents PDF associes.

Competences et sous-competences mobilisees

B1

Gerer le patrimoine informatique

  • B1.1 Recenser et identifier les ressources numeriques
  • B1.6 Verifier le respect des regles d'utilisation des ressources numeriques
B3

Developper la presence en ligne de l'organisation

  • B3.1 Participer a la valorisation de l'image de l'organisation sur les medias numeriques
  • B3.3 Participer a l'evolution d'un site Web exploitant les donnees de l'organisation
B5

Mettre a disposition des utilisateurs un service informatique

  • B5.1 Realiser les tests d'integration et d'acceptation d'un service
  • B5.2 Deployer un service

Contexte

CyberNews est une realisation d'atelier professionnel dont l'objectif est de presenter des actualites importantes en cybersecurite, avec un focus sur les donnees personnelles. Le site sert de support de veille : l'utilisateur consulte les informations par categorie, ouvre une fiche detaillee 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 detaillee 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 `categories` et `news`, reliees par une cle etrangere, afin d'organiser les actualites par themes.

Le contenu de veille reference plusieurs cas concrets : fuite de donnees 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 entree stocke un titre, un auteur, une date, un resume, une source Web, un PDF source et une categorie.

Une attention particuliere a ete portee a la securite applicative : validation de l'identifiant de news avec `FILTER_VALIDATE_INT`, requetes preparees pour charger une fiche, echappement des sorties HTML avec `htmlspecialchars`, ouverture securisee des liens externes avec `rel="noopener noreferrer"` et encodage `utf8mb4` pour la base de donnees. Le menu est genere dynamiquement depuis MySQL, ce qui permet d'ajouter des categories 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

Bloc 1 — Support et mise a disposition de services informatiques

obligatoire
Capture de la page CyberNews : menu dynamique des categories, fiche detaillee d'une news, metadonnees, liens source et resume.
Capture de la page CyberNews : menu dynamique des categories, fiche detaillee d'une news, metadonnees, liens source et resume.
CREATE TABLE IF NOT EXISTS `categories` (
  `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 `categories` (`idCategorie`);
Modele de donnees : categories et news avec relation entre les deux tables.
$esaConnexion = mysqli_connect("localhost", "root", "", "esa_cybernewsbd");

if (!$esaConnexion) {
    die("La connexion a la base de donnees a echoue.");
}

mysqli_set_charset($esaConnexion, "utf8mb4");

$esaTableCategories = esaTrouverNomTable($esaConnexion, "esa_categorie", "categories");
$esaTableNews = esaTrouverNomTable($esaConnexion, "esa_news", "news");
Connexion a MySQL, encodage utf8mb4 et detection 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']);
Securisation de la fiche news : validation de l'ID, requete preparee et echappement HTML.

Bloc 2 — Conception et developpement d'applications

$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 : categories chargees depuis la base, puis news associees a chaque categorie.
<h2>Presentation du site</h2>
<p>Ce site a pour objectif de vous presenter les news les plus importantes de ces derniers mois en matiere de cybersecurite.</p>
<p>Les news presentees traitent plus particulierement de la cybersecurite autour des donnees personnelles.</p>
<p>Chaque article propose une source externe et une version imprimable pour conserver l'information.</p>
Page d'accueil : presentation du site et objectif de veille cybersecurite.

Bloc 3 — Cybersecurite des services informatiques

<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>
Acces aux sources et aux documents PDF pour justifier chaque actualite de veille.
Categories : Fuite de donnees, Attaques DDoS, Faille critique, Cybersecurite.

Exemples de news :
- Fuite de donnees 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 donnees
- Sanctions CNIL pour manquements de securite
- Fuite de donnees a l'ANTS
- Rockstar Games : fuite massive de 78,6 millions d'enregistrements internes
Exemples de categories et de sujets presents dans le dump SQL du projet.