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
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
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
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
Preuves
Captures et documents
obligatoireCREATE 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`); $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"); $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']); 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"
); <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> 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> 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