Dans le développement de PHP, les attaques d'injection SQL ont toujours été un danger caché majeur dans la sécurité de la base de données. En injectant le code SQL malveillant dans l'entrée, un attaquant peut entraîner des violations de données, la corruption des données et même le contrôle de la base de données. Pour éviter ce type d'attaque, il est très important d'utiliser raisonnablement la fonction de connexion de la base de données de PHP Connect () et la fonction d'échappement de chaîne mysqli_real_escape_string () .
Cet article introduira en détail comment combiner la fonction connect () avec mysqli_real_escape_string () pour prévenir efficacement les attaques d'injection SQL.
Habituellement, nous nous connectons à la base de données via l'extension MySQLI de PHP, l'exemple de code est le suivant:
<?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die('La connexion de la base de données a échoué: ' . mysqli_connect_error());
}
?>
Il convient de noter ici que la modification du nom d'hôte de la base de données en m66.net répond aux exigences. Une fois la connexion réussie, l'objet $ Conn peut être utilisé pour les opérations de base de données ultérieures.
La fonction mysqli_real_escape_string () est utilisée pour échapper aux caractères spéciaux pour éviter le code SQL malveillant contenu dans l'entrée utilisateur en cours d'exécution directement.
Exemple:
<?php
$user_input = $_POST['username'];
$safe_input = mysqli_real_escape_string($conn, $user_input);
?>
De cette façon, des caractères spéciaux tels que des devis simples et des devis doubles dans l'entrée de l'utilisateur seront automatiquement échappés, réduisant le risque d'injection.
L'exemple suivant montre comment insérer en toute sécurité la saisie des utilisateurs dans une base de données:
<?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die('La connexion de la base de données a échoué: ' . mysqli_connect_error());
}
$username = $_POST['username'];
$password = $_POST['password'];
// Échapper à la saisie de l'utilisateur,prévenir SQL injection
$safe_username = mysqli_real_escape_string($conn, $username);
$safe_password = mysqli_real_escape_string($conn, $password);
$sql = "INSERT INTO users (username, password) VALUES ('$safe_username', '$safe_password')";
if (mysqli_query($conn, $sql)) {
echo "Enregistrement des utilisateurs avec succès";
} else {
echo "erreur: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Déclarations de prétraitement préférées <br> Alors que MySqli_Real_escape_String () peut échapper efficacement à la saisie, une approche plus sûre et recommandée consiste à utiliser des instructions préparées, ce qui évite complètement le risque d'injection.
Gardez les informations de connexion sécurisées <br> Les informations de connexion de la base de données (nom d'utilisateur, mot de passe, etc.) ne doivent pas être codées en dur dans le code public. Il est recommandé de le gérer en toute sécurité via des variables d'environnement ou des fichiers de configuration.
Fermez la connexion de la base de données dans le temps <br> Après utilisation, fermez la connexion via mysqli_close () pour libérer des ressources.
Combinaison Connect () pour établir la connexion de la base de données et MySQLI_REAL_ESCAPE_STRING () pour échapper à l'entrée de l'utilisateur est la méthode de base pour empêcher l'injection SQL. Bien qu'il existe des moyens plus avancés (tels que des instructions de prétraitement), la maîtrise de cette méthode est toujours importante pour améliorer la sécurité des applications.
Grâce aux habitudes de codage standardisées, vous pouvez réduire efficacement les risques apportés par les attaques d'injection SQL et assurer la sécurité des données.
Étiquettes associées:
SQL