2
我正在爲全文搜索包調用系統存儲過程。它生成用於基於sql文本的全文搜索的術語。使用存儲過程防止SQL注入
例如:EXEC ctx_query.explain( 'INDEX_NAME', '全文過濾器', '說明表')等
我做在我的代碼如下:
using(OracleCommand command = new OracleCommand("ctx_query.explain", DataAccess.GetConnString()))
{
comm.Parameters.AddWithValue("index_name", "explain1");
//comm.Parameters.AddWithValue("text_query", "(test) OR (term1 ACCUM term2");
comm.Parameters.AddWithValue("text_query", txtUserInput.Text);
comm.Parameters.AddWithValue("explain_table", "explain_results");
comm.Parameters.AddWithValue("sharelevel", 0);
comm.Parameters.AddWithValue("explain_id", new Guid().ToString().Substring(0,30));
comm.ExecuteNonQuery();
}
的「 text_query「參數將由用戶輸入構建。上述是否防止sql注入,因爲textUserInput.Text將作爲命令參數傳遞?
但是不能有人輸入'「); DELETE FROM table作爲用戶輸入嗎? – user730108
是的,'ctx_query.explain'將**檢查並報告**,它不會執行**它。 –