Note : Pour réussir ces défis, vous devrez examiner le code source de la page et utiliser les outils développeur de votre navigateur.
Guide Technique
Cette application simule une boutique en ligne avec différents défis de sécurité.
Objectif
Votre mission est de naviguer à travers les différents scénarios de sécurité, d'identifier et d'exploiter des failles pour progresser.
Scénarios Disponibles
- Manipulation des Prix : Exploitez la validation côté client pour ajuster les prix des produits.
- Rejeu de Session : Rejouez une session en manipulant les cookies pour accéder à un compte sans authentification.
- Condition de Course : Bypassez les contrôles de validation en envoyant plusieurs requêtes simultanées.
Glossaire
Glossaire des Termes Techniques
- Validation côté client : Processus de vérification des données effectué dans le navigateur de l'utilisateur, généralement avec JavaScript.
- Validation côté serveur : Vérification des données effectuée sur le serveur, considérée comme plus sécurisée car l'utilisateur ne peut pas la manipuler directement.
- Vulnérabilité : Faiblesse dans un système qui peut être exploitée pour causer un préjudice ou un comportement non désiré.
- Contrôle d'accès inapproprié : Situation où les restrictions d'accès aux ressources ne sont pas correctement mises en œuvre, permettant à des utilisateurs non autorisés d'accéder à des données ou des fonctionnalités.
- Outils développeur : Ensemble d'outils intégrés dans les navigateurs modernes pour aider les développeurs à tester et déboguer les applications web.
- Condition de course : Situation où le comportement d'un système dépend de l'ordre ou du timing des événements, souvent exploitable pour contourner les contrôles.
Liens Utiles
Code Exemple Vulnérable
// Extrait de code vulnérable
const products = [
{ id: "ARD01", name: "Arduino UNO", price: 25.00 },
// ...
];
function validatePurchase() {
let totalPrice = 0;
cart.forEach(item => {
totalPrice += item.price;
});
if (totalPrice <= currentBudget) {
// Autoriser l'achat
} else {
// Rejeter l'achat
}
}
Code Exemple Sécurisé
// Extrait de code sécurisé
async function validatePurchase() {
let isValid = true;
for (let item of cart) {
const serverPrice = await API.getPrice(item.productId);
if (serverPrice !== item.price) {
isValid = false;
break;
}
}
if (isValid) {
// Autoriser l'achat
} else {
// Rejeter l'achat
}
}