TD : Introduction à la sécurité des applis web en PHP.
Vous pouvez récupérer sur le projet git
https://dwarves.iut-fbleau.fr/git/monnerat/wim21.git
pour chaque exercice un squelette à compléter.
Le tp utilise une application de mini-blog. Le code PHP est volontairement simplifié et suffisamment laxiste pour illustrer les failles de sécurité abordées en cours.
Le site utilise un base de données sql. Vous pouvez directement l'importer (répertoire extra
).
Les paramètres pour l'accès à la base de données sont dans lib/common.php
.
Avant de démarrer, consultez les pages existantes, créez un compte et authentifiez-vous.
Modifiez votre commentaire. Modifiez le commentaire d'un autre utilisateur.
comment_create.php
afin qu'on ne puisse pas accéder à un commentaire
d'un autre utilisateur.
Pour se prémunir contre cela, on va, dans le formulaire, rajouter un code d'authentification (hash avec une clé secrète) du champ id_comment pour être sur que les données proviennent du formulaire de l'application. Uilisez la fonction hash_mac.
Rajoutez, dans le formulaire, un hash que vous pourrez comparé au hash re-calculé après l'envoie des données.
h1
de la page de l'article.
document.querySelector("h1").innerHTML = "hey !!!!";
javascript:alert(/XSS !/);
La valeur de la variable login est écrite dans le formulaire, dans l'attribut value du champ texte correspondant.
Il donc tout à fait possible d'injecter du code javascript via un attribut html, par exemple onchange ...
Les vunérabilités de type CSRF (Cross-Site Request Forgery) consiste à forger de fausses requêtes à partir d'url authentifiées et à pousser le client à exécuter des actions sans le savoir.
Le client authentifié exécute à son insu une requête (suppression par exemple) par un formulaire dissimuler ou une balise image contrôlée par du javascript.
csrf.html
(soyez authentifié).Que s'est-il passé ?quote
de PDO.