2011-04-05 24 views
0
public ActionResult PostMessage(string message) 
{ 
    MessageController mc = new MessageController(); 
    mc.postMessage(message); 
} 

我能在這裏做什麼來防止SQL注入字符串?這是用戶在整個頁面上輸入的唯一輸入。我熟悉一些PHP技術,但我將如何在c#中保護自己?數據庫注入預防c#

謝謝!

編輯:

connection.Open(); 
SqlCommand command = new SqlCommand("[dbo].[tblMessages_Insert]", connection); 
command.CommandType = CommandType.StoredProcedure; 

// params 
SqlParameter messageText = new SqlParameter("@messageText", SqlDbType.VarChar); 
messageText.Value = message; 

// add params 
command.Parameters.Add(messageText); 

rows = command.ExecuteNonQuery(); 
+2

我會想象它取決於您使用的數據庫API! – 2011-04-05 23:47:26

+0

in .net - system.data.sqlclient – Scott 2011-04-05 23:47:57

+1

你用什麼來將數據存儲在數據庫中?如果您正確使用DbCommands和參數或使用ORM,則應該自動進行保護。如果您正在接收該用戶消息,並在稍後的某個時間將其寫回HTML,那麼我會更關注CSS問題。 – 2011-04-05 23:48:05

回答

3

在我看來,你已經防範注射;你正在使用參數。

+1

參數化存儲過程提供了一些防止注入的內在保護。但是,如果你正在構建和執行過程中的動態sql,看看:) – womp 2011-04-05 23:55:01

+0

是的我知道...但基於他的存儲過程的名稱,似乎不太可能,任何動態的事情發生:) – 2011-04-05 23:57:08

+0

謝謝你們!不知道這個......大聲笑 – Scott 2011-04-06 00:01:31