2010-01-22 48 views
0

任何人都可以告诉我一种方法来防止在建立 WHERE子句有"myval IN (string_1, ... , string_n)"条件的查询时的sql注入?带有字符串列表的SQLite注入

我虽然关于动态构建带有注释的命令文本,并为字符串列表中的这些注释添加参数。有更容易的方法吗 ?

谢谢。

回答

5

不,没有简单的方法。不要列出危险字符。只需使用带参数的命令。

using (var conn = new SQLiteconnection(connectionString)) 
using (var command = conn.CreateCommand()) 
{ 
    conn.Open(); 
    command.CommandText = "select name from persons where id = @id"; 
    command.Parameters.AddWithValue("@id", 5); 
    using (var reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 

     } 
    } 
}