sql >> データベース >  >> RDS >> Sqlserver

C#コードからMSSQL ServerへのSQLインジェクションを回避するアルゴリズム?

    アルゴリズムは必要ありません。SQLステートメントを作成するために文字列連結を使用しないでください。代わりに、SqlCommand.Parametersコレクションを使用してください。これにより、必要な値のエスケープがすべて実行されます('の置き換えなど)。 ''を使用 )そして、他の誰か(つまり、Microsoft)がすべてのテストを行ったため、コマンドが安全であることを確認します。

    例えばストアドプロシージャの呼び出し:

    using (var connection = new SqlConnection("..."))
    using (var command = new SqlCommand("MySprocName", connection))
    {
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("@Param1", param1Value);
        return command.ExecuteReader();
    }
    

    この手法は、インラインSQLステートメントでも機能します。例:

    var sql = "SELECT * FROM MyTable WHERE MyColumn = @Param1";
    using (var connection = new SqlConnection("..."))
    using (var command = new SqlCommand(sql, connection))
    {
        command.Parameters.AddWithValue("@Param1", param1Value);
        return command.ExecuteReader();
    }
    


    1. PostgreSQLUNIXドメインソケットとTCPソケット

    2. MySQLエンティティ属性値スキーマをピボットする方法

    3. Oracle WITHおよびMATERIALIZEヒントは、関数の自律トランザクションとして機能します

    4. 高可用性のためにChamiloMariaDBデータベースをデプロイする方法