Maison > développement back-end > C++ > Comment puis-je prévenir les vulnérabilités d'injection SQL dans mes applications C #?

Comment puis-je prévenir les vulnérabilités d'injection SQL dans mes applications C #?

Susan Sarandon
Libérer: 2025-02-03 02:11:09
original
960 Les gens l'ont consulté

How Can I Prevent SQL Injection Vulnerabilities in My C# Applications?

Fortifier les applications C # contre les attaques d'injection SQL

La sécurité des données est essentielle dans le développement des applications et l'injection de SQL reste une vulnérabilité majeure. Ce guide décrit les méthodes prouvées pour protéger vos applications C # de ces attaques.

Une étape fondamentale est une validation d'entrée rigoureuse. Utilisant des expressions régulières ou des fonctions C # natives, vous pouvez appliquer des formats d'entrée stricts. Par exemple, un champ de messagerie pourrait être limité à la structure "@ domain.com". Cela empêche les caractères potentiellement nocifs d'infiltrant les requêtes SQL.

Une stratégie plus robuste implique des requêtes paramétrées et la classe SqlCommand. Cette technique sépare proprement l'entrée des utilisateurs de l'instruction SQL elle-même, laissant la manipulation et le filtrage de type au moteur de la base de données. SqlParameter Les objets sont créés, des valeurs attribuées, puis intégrés dans la requête.

Exemple illustratif:

using System.Data;
using System.Data.SqlClient;

private static void UpdateDemographics(int customerID, string demoXml, string connectionString)
{
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
Copier après la connexion

Les requêtes paramétrées réduisent considérablement le risque d'injection de SQL. La base de données traite les paramètres comme des données, et non sur le code exécutable, éliminant le besoin d'une désinfection manuelle et offrant une forte protection contre les entrées malveillantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal