私は、SQLインジェクションの防止のためのSqlCommandオブジェクト機能を使用して挿入するSQL文を持っているが、それはエラーを与える:マルチパート識別子を"System.Web.UI.HtmlControls.HtmlInputText"をバインドできませんでした。同じテーブルを問題なく更新するために同じSqlCommand機能を使用していますが、この簡単な挿入はエラーを示しています。誰も助けることができますか?マルチパート識別子「System.Web.UI.HtmlControls.HtmlInputTextは、」バインドできませんでした
sSql = "INSERT INTO [camss].[dbo].[tb_ds0402req] ([ds0402_key] ,[lname]) " +
"VALUES (" + Session["DS0402Key"] + "," + @VisitorLName + ");";
try
{
using (SqlCommand cmd = new SqlCommand(sSql, conn))
{
cmd.Parameters.AddWithValue("@VisitorLName", VisitorLName.Value);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
//error handling code
}
'sSql'が構築される方法は、SQLインジェクションに対して脆弱であるようです。 [Bobby Tables](http://xkcd.com/327/)があなたのユーザーの一人であると考えましたか? –
準備されたステートメントは、すべての変数の値をパラメーターに入れない限り、あまり役に立ちません。この場合、たとえば、 '@ VisitorLName'と同じように、' VALUES(@ DS0402Key、@VisitorLName) 'と言って、' @ DS0402Key'パラメータをコマンドに追加します。 – cHao