nouvelles
Serverspace Technologies aux Emirats Arabes Unis : Lancement de Falconcloud
RF
30 mai 2023
Mise à jour en juin 30, 2023

Protéger un Linux base de données par injection SQL

Bases de données Debian Réseaux

Familiarisez-vous avec les bases de la sécurité des applications Web et comment empêcher les attaques sur vos bases de données. Dans le cadre de l'instruction, maîtrisez les compétences de recherche de vulnérabilités et apprenez à appliquer diverses méthodes de protection contre ce type d'attaque pour assurer la sécurité de leurs applications.

SQL

SQL (Structured Query Language) est un langage qui a des règles de syntaxe strictes dans la construction des requêtes et remplit la fonction de gestion des bases de données relationnelles. SQL est un langage déclaratif, mais sa direction principale est les bases de données, vous pouvez y accéder directement ou vous pouvez utiliser un programlangage ming avec bibliothèques pré–installées.

Injections SQL

La première et principale action de sécurité dans n'importe quel système est assez simple, nous devons mettre à jour le logiciel de la machine. Sur Debian, cette commande sera :

sudo apt update && sudo apt upgrade -y
Update machine packets
Capture d'écran №1 — Mettre à jour les paquets de la machine

Ensuite, nous utilisons le Python bibliothèque pour demander notre base de données. Téléchargez le package nécessaire :

pip install psycopg2
Install psycopg2
Capture d'écran №2 — Installer psycopg2

Si vous voyez le message d'erreur "commande pip introuvable" dans un Debian system>, entrez cette commande :

sudo apt-get install python3-pip

Si vous voyez le message d'erreur "Impossible de trouver une version qui satisfait à l'exigence psycopg2", entrez cette commande :

pip install psycopg2-binary

Pour vous assurer que vous pouvez saisir CLI:

pip --version
Pip installation
Capture d'écran №3 — Installation de Pip

ParamRequêtes étérisées

Supposons que vous disposiez d'une application Web permettant aux utilisateurs de rechercher des produits par leur nom. Au lieu d'utiliser une requête comme :

SELECT * FROM products WHERE name = 'searchterm';

You need to use a parameterized query that can predict input non–validation data like in this config:

SELECT * FROM products WHERE name = ?;

And pass the search term as a parameter, for example, present below:

import psycopg2

conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")

cur = conn.cursor()

search_term = "apple"

cur.execute("SELECT * FROM products WHERE name = %s;", (search_term,))

rows = cur.fetchall()

for row in rows:
print(row)

conn.close()

first-method
Capture d'écran №4 — Première méthode

Validation des entrées

Disons que vous avez un formulaire où les utilisateurs peuvent soumettre des commentaires. Avant d'insérer le commentaire dans la base de données, validez l'entrée pour vous assurer qu'elle ne contient que des caractères valides. Par exemple, en PHP, vous pouvez utiliser la fonction preg_match pour vérifier les caractères alphanumériques et spaces.

$comment = $_POST['comment'];

if (!preg_match('/^[a-zA-Z0-9 ]+$/', $comment)) {
// Invalid input, do something
} else {
// Insert comment into database
}

second_method
Capture d'écran №5 — Deuxième méthode

Accès au moindre privilège

Vous avez une base de données avec plusieurs tables et vous souhaitez créer un utilisateur qui ne peut lire les données que d'une seule table. Créez un nouvel utilisateur et accordez-lui uniquement des privilèges SELECT sur cette table. Exemple d'affichage ci-dessous :

CREATE USER readonly_user;
GRANT SELECT ON products TO readonly_user;

La gestion des erreurs

Supposons que vous disposiez d'un formulaire de connexion dans lequel les utilisateurs peuvent entrer leur nom d'utilisateur et leur mot de passe. En cas d'erreur, telle qu'un nom d'utilisateur ou un mot de passe incorrect, affichez un message d'erreur générique au lieu d'un message détaillé. Par exemple, en Java, vous pouvez intercepter l'exception SQLException et afficher un message d'erreur générique.

try {
// Execute query to check if the username and password match
} catch (SQLException e) {
System.out.println("Error: Could not log in.");
}
third-method
Capture d'écran №6 — Troisième méthode

Protection contre l'injection SQL

En conclusion, la sécurité des applications Web est un aspect crucial du développement logiciel. Attaques par injection SQL sont l'un des types d'attaques les plus courants contre les bases de données qui peuvent entraîner des dommages importants pour une organisation. Pour prévenir de telles attaques, il est important d'apprendre les principes de base du langage SQL et ses vulnérabilités, d'étudier les techniques d'injection SQL et d'analyser des exemples de code contenant des vulnérabilités d'injection SQL.

En outre, les développeurs doivent appliquer diverses méthodes de protection contre Injections SQL, comme l'utilisation de paramrequêtes etérisées, validation des entrées, accès au moindre privilège et gestion des erreurs. En mettant en œuvre ces techniques, les développeurs peuvent assurer la sécurité de leurs applications et protéger les données sensibles contre les accès non autorisés. Il est essentiel de se tenir au courant des dernières mesures de sécurité et de maintenir les logiciels à jour pour éviter toute vulnérabilité potentielle.

Voter:
5 sur 5
Note moyenne : 5
Noté par : 1
1101 CT Amsterdam Pays-Bas, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300

Vous pourriez aussi aimer...

Nous utilisons des cookies pour rendre votre expérience sur le Serverspace meilleur. En poursuivant votre navigation sur notre site, vous acceptez nos
Utilisation des cookies et Politique de confidentialité.