Correction du DM de SQL (serveur de discussion)
Le sujet au format zip à télécharger et extraire.
TODO 1
93 94 |
|
Erreur fréquente observée
L'ordre était important car le fichier templates/index.html
affichait la première valeur
comme titre. Si vous avez vu seulement "1" et "2" à la place des titres de discussions, c'est
sans doute parce que vous avez écrit SELECT id,sujet
ou bien SELECT *
TODO 2
107 108 |
|
On commence à utiliser la fonctionnalité de SQLite de remplacer les variables dans les requêtes
par des ?
puis les donner à part pour éviter les failles de sécurité de type injection SQL.
Ceci ne fait pas partie du langage SQL, mais des fonctionnalités proposées par les systèmes de gestion de base de donnée pour protéger contre une modification malintentionnée de la requête.
(Il ne faut donc pas dans un sujet de type bac écrire des requêtes SQL avec des ?
dedans...)
TODO 3
80 81 |
|
Si on donne un couple (nom, mot de passe) qui n'est pas dans la table user, cette requête ne renverra rien.
TODO 4
68 69 |
|
TODO 5
57 58 |
|
TODO 6
43 44 |
|
On remarque que les messages ne sont pas stockés dans des tables différentes
pour chaque discussion. À la place, on filtre la table message pour obtenir
seulement les messages de la discussion à afficher (ceux qui ont le bon discussion_id
).
BONUS
Comment tricher à la connection ?
Vous pouvez re-regarder le code : comme dans beaucoup de sites, pour éviter de redemander le mot de passe à l'utilisatrice à chaque requête, on stocke un cookie sur son navigateur. Ce cookie est ré-envoyé à chaque fois et prouve qu'il s'agit bien de la bonne personne.
Mais ici, au lieu de stocker une valeur aléatoire et impossible à deviner, on stocke juste un cookie dont la clé est "nom" et la valeur... le nom de l'utilisatrice.
Il suffit donc de taper F12 pour ouvrir la console de développement, d'aller dans l'onglet stockage (pour Firefox) et de créer un cookie qui s'appelle "nom" et qui a comme valeur "admin" pour être connecté comme admin.
Cookies de session
Sur les sites où vous êtes connectés, vous pouvez essayer d'aller chercher le cookie de session, et copier sa valeur dans un autre navigateur ou sur un autre ordinateur. En général, vous serez automatiquement connecté sans avoir à retaper le mot de passe (sauf si le site se rend compte d'une autre manière que ce n'est pas la même connection).