Skip to content

Commit 67659f2

Browse files
committed
refactor: fix major typos and protect meteorites-map against XSS.
1 parent 4625219 commit 67659f2

7 files changed

Lines changed: 47 additions & 30 deletions

File tree

404.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818

1919
<meta name="author" content="Nathan Debilloëz">
2020

21-
<script>
21+
<script>
22+
23+
const currentPath = window.location.pathname.replace(/\/$/, "");
2224

23-
if (window.location.href != window.location.protocol + "//" + window.location.host + "/404") window.location.href = window.location.protocol + "//" + window.location.host + "/404";
25+
if (currentPath !== "/404") window.location.replace("/404");
2426

2527
</script>
2628

@@ -210,7 +212,7 @@ <h1 class="website-main-panel-title">Oups, erreur 404:</h1>
210212

211213
<p class="copyright-text"> Le code source est disponible sur <a href="https://github.com/Nde-Code/nde-code.github.io/blob/main/404.html" target="_blank" rel="noopener noreferrer" class="copyright-link">Github</a>.</p>
212214

213-
<p class="copyright-text"> L'icône d'erreur est fait par Freepik sur <a href="https://www.flaticon.com/free-icon/error_4457164?term=error&page=1&position=12&origin=search&related_id=4457164#" target="_blank" rel="noopener noreferrer" class="copyright-link">Flaticon</a>.</p>
215+
<p class="copyright-text"> L'icône d'erreur est faite par Freepik sur <a href="https://www.flaticon.com/free-icon/error_4457164?term=error&page=1&position=12&origin=search&related_id=4457164#" target="_blank" rel="noopener noreferrer" class="copyright-link">Flaticon</a>.</p>
214216

215217
</div>
216218

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ <h1 class="website-main-panel-title">Bienvenue sur mon site:</h1>
258258

259259
<p class="modalbox-description">
260260

261-
Sans m'y limiter, j'explore aussi d'autres languages comme Python pour scripts, automatisations, IA, ... et C++ pour des projets plus complexes, notamment ceux liés aux systèmes..
261+
Sans m'y limiter, j'explore aussi d'autres langages comme Python pour scripts, automatisations, IA, ... et C++ pour des projets plus complexes, notamment ceux liés aux systèmes.
262262

263263
Je m'intéresse aussi à Linux: c'est un noyau open-source que j'exploite pour divers usages comme mon NAS, ou pour la remise en service d'anciens ordinateurs.
264264

online/foucault.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,13 @@ <h2>La latitude:</h2>
256256

257257
<div class="modalbox-text-container">
258258

259-
<h2>Longeur du fil:</h2>
259+
<h2>Longueur du fil:</h2>
260260

261-
<p class="modalbox-description bold-large">Longeur du fil: <span class="color-light-blue" id="length-id">60m</span> </p>
261+
<p class="modalbox-description bold-large">Longueur du fil: <span class="color-light-blue" id="length-id">60m</span> </p>
262262

263263
<p class="modalbox-description"> Sélectionnez la longueur du fil, en mètres, qui supporte la masse servant de pendule: </p>
264264

265-
<input title="Longeur du fil:" type="range" id="length-value-id" class="modalbox-range" value="60" min="10" max="100" step="1">
265+
<input title="Longueur du fil:" type="range" id="length-value-id" class="modalbox-range" value="60" min="10" max="100" step="1">
266266

267267
</div>
268268

@@ -288,7 +288,7 @@ <h2>Nombre de périodes d'oscillations:</h2>
288288

289289
<h2>Angle du lancer initial:</h2>
290290

291-
<p class="modalbox-description bold-large">Position initial en x (x(0)): <span class="color-light-blue" id="initial-position-id">3.140m</span> </p>
291+
<p class="modalbox-description bold-large">Position initiale en x (x(0)): <span class="color-light-blue" id="initial-position-id">3.140m</span> </p>
292292

293293
<p class="modalbox-description bold-large">Angle initial: <span class="color-light-blue" id="initial-angle-id"></span> </p>
294294

@@ -306,7 +306,7 @@ <h2>Type de graphique:</h2>
306306

307307
<p class="modalbox-description"> Sélectionnez le type de graphique pour afficher les solutions du système: </p>
308308

309-
<select title="Intérvalle d'affichage:" id="graph-type-id">
309+
<select title="Intervalle d'affichage:" id="graph-type-id">
310310

311311
<option value="x(t)">Évolution de x(t)</option>
312312

online/harmonic-waves.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ <h2>Phase initiale de la première onde:</h2>
284284

285285
<div class="modalbox-text-container">
286286

287-
<h2>Sens de propagation de propagation de la première onde:</h2>
287+
<h2>Sens de propagation de la première onde:</h2>
288288

289289
<p class="modalbox-description"> Veuillez sélectionner le sens de propagation de la première onde à simuler: </p>
290290

@@ -358,7 +358,7 @@ <h2>Phase initiale de la deuxième onde:</h2>
358358

359359
<div class="modalbox-text-container">
360360

361-
<h2>Sens propagation de propagation de la deuxième onde:</h2>
361+
<h2>Sens propagation de la deuxième onde:</h2>
362362

363363
<p class="modalbox-description"> Veuillez sélectionner le sens de propagation de la deuxième onde à simuler: </p>
364364

@@ -392,7 +392,7 @@ <h2>Code couleurs:</h2>
392392

393393
<h2>Notes:</h2>
394394

395-
<p class="modalbox-description"><i class="fa-solid fa-square point"></i> Le simulateur a été entièrement repensée depuis la première version du logiciel. Le code a été optimisé au maximum afin d'offrir les meilleures performances possibles, tout en restant léger et efficace pour tous les utilisateurs. Une option exploitant le GPU est actuellement à l'étude, mais reste pour le moment facultative. </p>
395+
<p class="modalbox-description"><i class="fa-solid fa-square point"></i> Le simulateur a été entièrement depuis la première version du logiciel. Le code a été optimisé au maximum afin d'offrir les meilleures performances possibles, tout en restant léger et efficace pour tous les utilisateurs. Une option exploitant le GPU est actuellement à l'étude, mais reste pour le moment facultative. </p>
396396

397397
<p class="modalbox-description"><i class="fa-solid fa-square point"></i> Le temps ne s'écoule bien entendu pas chaque seconde, ce qui serait beaucoup trop gourmand en ressources et rendrait l'animation peu visible. Un facteur a donc été programmé afin de rendre l'animation aussi optimale que possible. </p>
398398

online/interpolation-playground.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ <h1 class="website-main-panel-title">Logiciel de calcul d'interpolation:</h1>
203203

204204
<p class="website-main-panel-description"><i class="fa-regular fa-circle-xmark red"></i> Qui limite en grandeur et en nombre les points saisis. </p>
205205

206-
<p class="website-main-panel-description"><i class="fa-regular fa-circle-dot orange"></i> Qui des algorithmes numériques en O(n<sup>3</sup>) et O(n<sup>2</sup>). </p>
206+
<p class="website-main-panel-description"><i class="fa-regular fa-circle-dot orange"></i> Qui utilise des algorithmes numériques en O(n<sup>3</sup>) et O(n<sup>2</sup>). </p>
207207

208208
</div>
209209

@@ -295,7 +295,7 @@ <h2>Tracer le polynôme de Lagrange:</h2>
295295

296296
<p class="modalbox-description"> Voulez-vous tracer le polynôme de Lagrange, c'est-à-dire la courbe passant par tous les points saisis ?: </p>
297297

298-
<select title="Polynôme de langrage:" id="langrage-plot-id">
298+
<select title="Polynôme de langrage:" id="lagrange-plot-id">
299299

300300
<option value="true" selected>Oui</option>
301301

@@ -483,7 +483,7 @@ <h2>Notes:</h2>
483483

484484
for (let elem of arr) {
485485

486-
if (typeof elem !== 'number' || isNaN(elem) || elem >= extendedData.X_LIMIT[1] || elem <= extendedData.X_LIMIT[0]) return false;
486+
if (typeof elem !== 'number' || isNaN(elem) || elem > extendedData.X_LIMIT[1] || elem < extendedData.X_LIMIT[0]) return false;
487487

488488
}
489489

@@ -1214,7 +1214,7 @@ <h2>Notes:</h2>
12141214
plotCurves(
12151215
$('#x-data').val(),
12161216
$('#y-data').val(),
1217-
$('#langrage-plot-id').val(),
1217+
$('#lagrange-plot-id').val(),
12181218
$('#spline-plot-id').val(),
12191219
$('#regression-plot-id').val(),
12201220
$('#deg-data').val()

online/meteorites-map.html

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,17 @@
405405

406406
};
407407

408+
function escapeHTML(value) {
409+
410+
return String(value ?? "")
411+
.replace(/&/g, "&amp;")
412+
.replace(/</g, "&lt;")
413+
.replace(/>/g, "&gt;")
414+
.replace(/"/g, "&quot;")
415+
.replace(/'/g, "&#039;");
416+
417+
}
418+
408419
function getRandomInt(min, max) { return Math.floor(Math.random() * (Math.floor(max) - Math.ceil(min) + 1)) + Math.ceil(min); }
409420

410421
async function fetchData(apiUrl, params = {}) {
@@ -555,7 +566,7 @@
555566
556567
<i class="fa-solid fa-square point"></i>
557568
558-
${item.label}: <span class="color-light-blue alone-bold">${item.value}</span>
569+
${escapeHTML(item.label)}: <span class="color-light-blue alone-bold">${escapeHTML(item.value)}</span>
559570
560571
</p>
561572
@@ -589,7 +600,7 @@ <h2>Top ${extendedData.ranking} des classes de météorites:</h2>
589600
590601
<i class="fa-solid fa-square point"></i>
591602
592-
Classe ${recclass}: <span class="color-light-blue alone-bold">${count} (${((count / statsJSON.totalCount) * 100).toFixed(2)} %)</span>
603+
Classe ${escapeHTML(recclass)}: <span class="color-light-blue alone-bold">${count} (${((count / statsJSON.totalCount) * 100).toFixed(2)} %)</span>
593604
594605
</p>
595606
@@ -612,24 +623,26 @@ <h2>Top ${extendedData.ranking} des classes de météorites:</h2>
612623
let latitude = isNaN(Number(data.latitude)) ? null : Number(data.latitude);
613624

614625
let longitude = isNaN(Number(data.longitude)) ? null : Number(data.longitude);
626+
627+
let safeId = encodeURIComponent(data.id);
615628

616629
let popUpContent = `
617630
618-
<b>Identifiant: </b> <span> ${data.id} </span> <br>
631+
<b>Identifiant: </b> <span> ${safeId} </span> <br>
619632
620-
<b>Nom: </b> <span> ${data.name} </span> <br>
633+
<b>Nom: </b> <span> ${escapeHTML(data.name)} </span> <br>
621634
622-
<b>Classe: </b> <span> ${(data.recclass === '' || data.recclass === 'N/A' || data.recclass === "Unknown") ? 'Non renseignée' : data.recclass} </span> <br>
635+
<b>Classe: </b> <span> ${(data.recclass === '' || data.recclass === 'N/A' || data.recclass === "Unknown") ? 'Non renseignée' : escapeHTML(data.recclass)} </span> <br>
623636
624-
<b>Masse: </b> <span> ${(data.mass === '' || data.mass === 'N/A' || data.mass === "Unknown") ? 'Non renseignée' : (data.mass / 1000).toFixed(4) + " kg"} </span> <br>
637+
<b>Masse: </b> <span> ${(data.mass === '' || data.mass === 'N/A' || data.mass === "Unknown") ? 'Non renseignée' : (Number(data.mass) / 1000).toFixed(4) + " kg"} </span> <br>
625638
626639
<b>Status: </b> <span> ${(data.fall === 'Fell' || data.fall === 'N/A' || data.fall === "Unknown") ? 'Tombée' : 'Trouvée'} </span> <br>
627640
628-
<b>Année: </b> <span> ${(data.year === '' || data.year === 'N/A' || data.year === "Unknown") ? 'Non renseignée' : data.year} </span> <br>
641+
<b>Année: </b> <span> ${(data.year === '' || data.year === 'N/A' || data.year === "Unknown") ? 'Non renseignée' : escapeHTML(data.year)} </span> <br>
629642
630643
<b>Coordonnées: </b> <span> (${(latitude === null) ? "Non renseignée": latitude}°, ${(longitude === null) ? "Non renseignée" : longitude}°) </span> <br>
631644
632-
<b>Lien permanent: </b> <span> ${'<a href="https://meteorites.nde-code.workers.dev/get?id=' + data.id + '" target="_blank" rel="noopener noreferrer">[Consulter]</a>'} </span> <br>
645+
<b>Lien permanent: </b> <span> <a href="https://meteorites.nde-code.workers.dev/get?id=${safeId}" target="_blank" rel="noopener noreferrer">[Consulter]</a> </span>
633646
634647
`;
635648

@@ -644,6 +657,8 @@ <h2>Top ${extendedData.ranking} des classes de météorites:</h2>
644657
popupAnchor: [0, -5]
645658

646659
});
660+
661+
if (latitude === null || longitude === null) return null;
647662

648663
return L.marker([latitude, longitude], { icon: customIcon }).bindPopup(popUpContent);
649664

@@ -697,7 +712,7 @@ <h2>Top ${extendedData.ranking} des classes de météorites:</h2>
697712

698713
let marker = processMeteorites(meteorite);
699714

700-
extendedData.marker_group.addLayer(marker);
715+
if (marker) extendedData.marker_group.addLayer(marker);
701716

702717
});
703718

online/radioactive-decay.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ <h2>Notes:</h2>
397397

398398
full_chain_html: '',
399399

400-
is_in_loading: false,
400+
is_data_in_loading: false,
401401

402402
is_run: false
403403

@@ -685,7 +685,7 @@ <h2>Notes:</h2>
685685

686686
createParagraph(`
687687
688-
<span class="color-green alone-bold">(${step.A}, ${step.Z})${step.element}</span> à pour masse atomique:
688+
<span class="color-green alone-bold">(${step.A}, ${step.Z})${step.element}</span> a pour masse atomique:
689689
690690
<span class="color-orange alone-bold"> ≈ ${getAtomicMassWithRadioisotopeNumber(step.element, step.A)} uma</span>.
691691
@@ -755,7 +755,7 @@ <h2>Notes:</h2>
755755

756756
updateRadioisotopes();
757757

758-
extendedData.is_in_loading = true;
758+
extendedData.is_data_in_loading = true;
759759

760760
setCorrectButtonOnMobile();
761761

@@ -979,13 +979,13 @@ <h2>Notes:</h2>
979979

980980
}
981981

982-
function setCorrectButtonOnMobile() { if ($(window).width() <= 1024 && extendedData.is_in_loading === true) $("#radioactive-decay-btn-id").html('<i class="fa-solid fa-atom"></i>'); }
982+
function setCorrectButtonOnMobile() { if ($(window).width() <= 1024 && extendedData.is_data_in_loading === true) $("#radioactive-decay-btn-id").html('<i class="fa-solid fa-atom"></i>'); }
983983

984984
$(document).ready(function() {
985985

986986
$('#radioactive-decay-btn-id').on('click', function() {
987987

988-
if (extendedData.is_in_loading) $('#modalbox-decay, .overlay').show();
988+
if (extendedData.is_data_in_loading) $('#modalbox-decay, .overlay').show();
989989

990990
});
991991

0 commit comments

Comments
 (0)