13

テキスト フィールドがあり、SQL ステートメントが壊れています。そのフィールドのすべての文字をエスケープするにはどうすればよいですか? C#でhttp://sqlite.phxsoftware.com/でsqliteを使用しています

4

2 に答える 2

33

次のようにパラメーターを使用する必要があります。

SQLiteCommand cmd = _connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM MyTable WHERE MyColumn = @parameter";
cmd.Parameters.Add( new SQLiteParameter( "@parameter", textfield ) );
SQLiteDataReader reader = cmd.ExecuteReader();

パラメータ化された SQL を使用すると、すべての入力値がエスケープされ、SQL インジェクション攻撃から保護されます。

于 2009-03-11T03:43:44.400 に答える
1

すべての一重引用符の区切り文字を疑わしい一重引用符( "ではない)に置き換えることもできます。

sql = sql.Replace("'","''");
于 2009-03-11T03:54:42.893 に答える