mysql sécurité - miguel-antoons/projet_webdev GitHub Wiki
Pour augmenter la sécurité au niveau de la base de données, le serveur web disposera uniquement des droits dont il a besoin. Ces droits seront limités à uniquement la ou les bases de données dont il a besoin ainsi que les action qu'il a besoin de faire.
Pour ce faire, il faut d'abord créer un utilisateur avec MySQL spécifiquement pour le site web
CREATE USER 'factevis'@'localhost' IDENTIFIED BY '<password>';
GRANT SELECT,INSERT,UPDATE,DELETE ON factevis.* TO 'factevis'@'localhost';
FLUSH PRIVILEGES;Grâce a une commande mysql spécifique, nous avons la possibilité d'augmenter la sécurité du serveur MySQL. Des fonctionalités tels qu'une meilleure gestion d'utilisateurs et un cryptage plus avancés sont possibles après l'utilisation de cette commande.
mysql_secure_installationPour empêcher que quelqu'un se connecte à la base de données depuis un hôte à distance, le serveur est configuré pour autoriser uniquement la connections du localhost ou de l'adresse ip 127.0.0.1.
bind-address=127.0.0.1Pour bloquer les attaques de type SQL Injection, nous utilisons des procédures parametrés lors des requêtes à la base de données. De cette façon, le texte mis dans un input d'un formulaire n'aura aucun effet non souhaité sur la procédure si ce n'est que la valeur d'un champ dans la base de données. Ci-dessous, un exemple.
arguments = (data[0], json.dumps(data[1]), data[2], )
# sql procedure to update the row
sql_procedure = """
UPDATE etiquettes
SET
CHANTIER = %s,
CODE_JSON = %s
WHERE ID_ETIQUETTE = %s
"""
cursor.execute(sql_procedure, arguments)