34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
var db = require('../db/database'); // Importe notre BDD
|
|
|
|
/* POST /login - Version SÉCURISÉE */
|
|
router.post('/login', function(req, res, next) {
|
|
const { username, password } = req.body;
|
|
|
|
// == LA CORRECTION (Requête préparée) ==
|
|
// On utilise des placeholders (?) pour les variables.
|
|
const sqlQuery = "SELECT * FROM users WHERE username = ? AND password = ?";
|
|
const params = [username, password]; // Les valeurs sont passées dans un tableau
|
|
|
|
console.log("Requête SÉCURISÉE préparée :", sqlQuery);
|
|
console.log("Valeurs :", params);
|
|
|
|
// Le driver (sqlite3) va "assainir" les entrées.
|
|
// L'injection ' OR 1=1 sera traitée comme une simple chaîne de texte
|
|
// et non comme du code SQL.
|
|
db.get(sqlQuery, params, (err, row) => {
|
|
if (err) {
|
|
// Transmet l'erreur au gestionnaire d'erreurs d'Express
|
|
return next(err);
|
|
}
|
|
|
|
if (row) {
|
|
res.json({ message: `(Sécurisé) Connexion réussie ! Bonjour, ${row.username} (rôle: ${row.role})` });
|
|
} else {
|
|
res.status(401).json({ message: "(Sécurisé) Échec de la connexion." });
|
|
}
|
|
});
|
|
});
|
|
|
|
module.exports = router; |