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
Gerer le patrimoine informatique
- B1.1 Recenser et identifier les ressources numeriques
- B1.6 Verifier le respect des regles d'utilisation des ressources numeriques
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
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
Preuves
Bloc 1 — Support et mise a disposition de services informatiques
obligatoire
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`); $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"); $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']); 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"
); <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> 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> 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