var retval = db.TestTable.SqlQuery("SELECT * FROM dbo.TestTable WHERE " + aColumn + " = '" + passedInValue + "'");
// normally when using parameters I would do something like this:
var valueParam = SqlParameter("aValue", passedInValues);
var retval = db.TestTable.SqlQuery("SELECT * FROM dbo.TestTable WHERE Column1 = @aValue", valueParam);
// NOTE: I would not do this at all. I know to use LINQ. But for this question, I'm concentrating on the issue of passing variables to a raw sql string.
ではなく、列と値の両方がで「パラメータ」されているので、生のSQLを安全に作る:Entity Frameworkの
var retval = db.TestTable.SqlQuery("SELECT * FROM dbo.TestTable WHERE " + aColumn + " = '" + passedInValue + "'");
、両方のSQLインジェクションを防ぐためにあるのでしょうか?
あなたは、あなたの答えの最初の部分を拡張することができますか? 'whilelist 'aColumn'はどういう意味ですか? –
@DaBestホワイトリストカラム: 'aColumn'があなたの既知のカラムのリストで完全に一致しない場合に失敗します:' if(!safeColumList.Contains(aColumn))throws new SecurityException( "Hacker !!"); '。 – Richard