Bases HTML-CSS-Javascript
Objectifs de l’activité :
-
langage de description HTML
-
feuille de style CSS
-
langage Javascript
-
Manipulation du Document Object Model
Mise en situation
On désire réaliser une page web qui liste une série de vulnérabilités de sécurité.
Chacune des vulnérabilités listées doit mentionner :
-
Son identifiant CVE.
-
Le produit affecté ainsi que son fournisseur
-
Le type du produit affecté (OS, Matériel, Application)
-
Le type de vulnérabilité (Injection SQL, XXX, CSRF, Path Traversal …)
-
Une courte description
💻 Travail n° 1 HTML
Ce travail consiste à ajouter quelques éléments HTML dans une page web dont le code partiel est fourni pour arriver au résultat suivant :
Vérifier la prise en compte de chaque modification demandée par un aperçu de la page web dans un navigateur web.
Ressources utiles :
-
Documentation en ligne fournie par la fondation Mozilla : Mozilla Developer Network (aka MDN)
Exemple : Pour savoir comment utiliser la balise `<img />, aller directement sur MDN > HTML > HTML Reference > Elements > img
ou passer par Google en faisant une recherche sur “mdn html img”.
🎯 Travail à faire :
-
On vous donne le code HTML partiel de cette page web dans dummy-vulns.html.
Le télécharger sur votre poste de travail, l’ouvrir dans un navigateur pour avoir un aperçu de la page web et analyser son contenu dans un éditeur de texte. -
Ajouter un titre de niveau 1 à la page web pour obtenir le rendu suivant. Noter que “(fictif)” est en gras et emphase.
Registre (fictif) de Vulnérabilités de Sécurité
-
Modifier le fichier HTML pour ajouter la vulnérabilité suivante dans la liste :
- id CVE
-
CVE-2024-1408
- Fournisseur
-
Apache
- Produit
-
Log4j v2.x
- Type
-
Application
- Vulnérabilité
-
RCE
- CVSS
-
10.0
- Description
-
Exécution de code à distance via la journalisation de chaînes JNDI.
-
Déplacer le titre de la page dans un élément générique de type bloc (→
<div>…</div>) auquel vous attribuerez la classe (→class=…) “title-bar” -
Ajouter dans ce bloc, à la suite du titre, un bouton (→
<button>…</button>) intitulé “Mode sombre” auquel vous attribuerez l'identifiant (→id=…) “darkModeBtn” -
Ajouter — entre le bloc “title-bar” et le tableau qui liste les CVEs — un élément générique de type bloc (→
<div>…</div>) auquel vous attribuerez la classe (→class=…) “filters”. -
Insérer successivement dans ce bloc générique :
-
un label (→
<label>…</label>) dont l’intitulé est “Filtrer par Type de Produit :” -
4 boutons (→
<button>…</button>) intitulés “Tous”, “OS”, “Matériel”, “Application” auxquels vous attribuerez respectivement les identifiants (→id=…) “allBtn”, “osBtn”, “hwBtn”, “appBtn”
-
💻 Travail n° 2 CSS
Ce travail consiste à modifier/ajouter quelques règles CSS pour styliser la page web.
Vérifier la prise en compte de chaque modification demandée par un aperçu de la page web dans un navigateur web.
Ressources utiles :
-
Documentation en ligne fournie par la fondation Mozilla : Mozilla Developer Network (aka MDN)
.
Exemple : Pour savoir comment utiliser la propriété CSS
color, aller directement sur MDN > CSS Reference > Properties > color-* > colorou passer par Google en faisant une recherche sur “mdn color”.
🎯 Travail à faire :
-
Créer un sous-répertoire
css/dans le répertoire où se trouvedummy-vulns-statiç.htmlpuis y sauvegarder la feuille de style dummy-vulns.css fournie.[...] | dummy-vulns.html \---css dummy-vulns.css -
Lier cette feuille de style à notre page web (→
<link … />) et vérifier sa prise en compte par le navigateur web -
Ajouter, dans la règle CSS qui s’applique à l’entête de la table (→
<th>), les déclarations CSS (c.-à-d. les paires propriété/valeur) qui permetteront de lui appliquer :-
une couleur de 1er plan (→
color) valant “white” -
une couleur d’arrière-plan (→
background) avec les composantes Rouge, Vert, Bleu suivantes : (44, 62, 80)
-
-
Ajouter une nouvelle règle qui s’applique aux éléments HTML dont la classe est
cvsspour qu’ils s’affichent en gras avec la couleur de 1erplan RGB(255,25,0)-
Voir Sélecteurs de classe
pour savoir comment cibler une classe d’éléments HTML.
-
Pour savoir quelle propriété CSS correspond à “gras”, rechercher “mdn css gras” dans Google.
-
-
Ajouter une règle qui cible tous les éléments
<td>ayant la classe “idCVE” — et seulement eux — pour les afficher en gras avec une couleur de teinte/saturation/luminositéHSL(210deg,94%,46%) -
Ajouter une règle qui cible tous les éléments
<tr>de pseudo-classe:hover— et seulement eux — qui permettra d’appliquer la couleur hexadécimale 0xf3f3f3 lors du survol de chaque ligne du tableau avec la souris.Voir :hover
pour plus d’explication sur la pseudo-classe
:hover. -
Modifier le fichier HTML de façon à appliquer en plus de la règle
.badge, les règles.OS,.HardwareetApplicationdéjà présentes dans le fichier CSS de façon à appliquer une couleur différente à chaque type de “badge” (c.-à-d. OS, Hardware ou Application). -
Créer une règle CSS s’appliquant à tous les éléments de classe “filters” avec les propriétés suivantes :
margin-bottom: 20px; display: flex; gap: 15px; align-items: center; background: #e8ecef; padding: 15px; border-radius: 5px; -
Créer une règle CSS s’appliquant à tous les boutons présents dans le bloc de classe “filters” avec les propriétés suivantes :
padding: 8px; border: 1px solid #ccc; border-radius: 4px; background: #3498db; color: white; cursor: pointer; border: none; font-weight: bold; -
Créer une règle CSS s’appliquant spécifiquement au bouton dont l’identifiant est “darkModeBtn” avec les propriétés suivantes :
background: #899fad; color: white; font-weight: bold; -
Faire une copie du fichier de style
dummy-vuln.cssdansdummy-vuln-dark.csset modifier les règlesbody,container,.filtersettr:hoverpour appliquer un thème sombre de votre convenance à la page web. -
Lier ce nouveau fichier de style à la page web et modifier l’intitulé du bouton d’identifiant “darkModeBtn” pour obtenir un résultat équivalent à l’illustration suivante :
💻 Travail n° 3 Javascript : le côté obscur 🥷
Ce travail consiste à ajouter du code Javascript à la page web pour appliquer le thème sombre ou clair à la page web suite à l’appui du bouton correspondant.
Ressources utiles :
-
Documentation en ligne fournie par la fondation Mozilla : Mozilla Developer Network (aka MDN)
.
Des tutoriels et la référence Javascript sont présents dans la rubrique … Javascript : Scripting language
🎯 Travail à faire :
-
Créer un sous-répertoire
js/dans le répertoire où se trouvedummy-vulns.htmlpuis y ajouter un nouveau fichierdummy-vulns.js[…] | dummy-vulns.html | +---css | dummy-vulns.css | dummy-vuln-dark.css | \---js dummy-vulns.js -
Lier ce fichier à notre page web en ajoutant la balise suivante dans l’entête HTML :
<script src="dummy-vulns.js" defer></script> (1)1 deferpermet de spécifier au navigateur de n’exécuter le script qu’après chargement et analyse syntaxique du fichier HTML. -
Modifier les fichiers
dummy-vulns.cssetdummy-vuln.jsen adaptant les instructions des étapes 2 et 3 de l’article Enabling Dark and Light mode in JavaScript – a guidepour faire en sorte de basculer alternativement du thème clair au thème sombre lorsqu’on appuie sur le bouton d’identifiant “darkModeBtn” présent dans notre page web.
Voir après l’illustration une façon de procéder.Le travail peut se décomposer comme suit :
-
Dans la feuille de style, dupliquer les styles de
body,filters,containerettr:hoverde façon à les adapter à un thème clair et à un thème sombre :body { (1) ... } body.dark-mode { (2) ... } .container { (1) ... } .container.dark-mode { (2) ... } ...1 règle pour le thème clair 2 règle pour le thème sombre -
Dans le script Javascript, ajouter un “Event Listener” à l’évènement “click” du bouton dont l’identifiant est “darkModeBtn”.
-
Coder l’algorithme suivant dans l'event listerner :
Basculer la classe "`dark-mode`" sur l'élément HTML `body` (1) Basculer la classe "`dark-mode`" sur l'élément HTML dont la classe est `container` (1) Basculer la classe "`dark-mode`" sur l'élément HTML dont la classe est `filters` (1) Basculer la classe "`dark-mode`" sur tous les éléments HTML de type `<tr>` (1) SI la liste des classes de l'élement `body` contient "`dark-mode`" ALORS (1) | Changer l'intitulé du bouton en "`Mode clair`" (2) SINON | Changer l'intitulé du bouton en "`Mode sombre`" FINSI1 Voir element.classlist et sa méthode
toggle()2 Voir element.textContent -
Cibler l’élément “body” en Javascript se fait directement avec
document.body. -
Un élément possédant une classe “dummy” pourra être ciblé avec
document.querySelector('.dummy') -
Pour cibler tous les éléments de type
<tr>, on peut utiliserdocument.querySelectorAll("tr") -
On peut appliquer exécuter un code pour chacun des éléments d’un tableau retourné par
querySelectorAll()avec la méthodeforEach(). Voir Array : méthode forEach()
-
-
💻 Travail n° 4 Javascript : Filtrage
Ce travail consiste enfin à filtrer les CVEs selon le type du produit affecté : OS, Matériel, Application, Tous.
🎯 Travail à faire :
-
Coder une fonction Javascript :
function filterTable(filterType) { (1) ... }1 filterType∈ ['all', 'OS', 'Hardware', 'Application']Son algorithme est le suivant :
Sélectionner toutes les lignes du tableau (-> balises `<tr>`) (1) POUR CHAQUE ligne FAIRE (2) | Sélectionner l'élément de cette ligne ayant la classe "`badge`" (3) | SI le type de filtrage est "`Tous`" (4) | | OU une des classes de l'élément correspond au paramètre `filterType` ALORS | | Forcer le style de l'affichage sur "`table-row`" (5) | SINON | | Forcer le style de l'affichage sur "`none`" FINPOUR1 Voir Document : méthode querySelectorAll() 2 Voir Array : méthode forEach() 3 Voir Document : méthode querySelector() 4 Voir if…else 5 Voir HTMLElement: style property -
Attribuer un event listener à chaque bouton de filtrage dont le rôle est d’appeler la fonction
filterTable()avec le paramètre adéquat.
🞄 🞄 🞄





