2013-04-24 49 views
0

我將使用一個選擇在asp.net網頁,其中即:Oracle數據庫和.NET(C#) - 如何防止SQL注入

string name=TexBox1.Text; 
string pas=TextBox2.Text; 
string c="select * from users where name='"+name+"' and password ='"+pas+"'"; 

有沒有什麼方法來防止SQL注入。

+7

使用準備好的語句。 – 2013-04-24 12:33:16

+0

你能舉一個例子嗎? – 2013-04-24 12:35:01

+2

另外,千萬不要將密碼本身存儲在數據庫中。總是使用加密鹽的密碼散列,可能使用Oracle的DBMS_CRYPTO PL/SQL包。請參閱http://stackoverflow.com/questions/8339107/prepared-statement-in-asp-net-c-sharp-when-using-sql-server – 2013-04-24 12:39:19

回答

0

首先,你必須在你的代碼驗證輸入數據,然後,因爲如果發生未處理的異常使用它像參數.. 和你正在返回如「連接字符串」你給有用的信息,如「列」敏感數據和「表格」名稱,這是危險的。 其次,添加一個「數據訪問層」來處理你的代碼,而不是在「代碼隱藏」中。您可以使用「存儲過程」並從您的代碼中調用它們,通過這種方式您可以隱藏編程邏輯的查詢並僅將參數傳遞給存儲過程,並且他可以完成這項工作,並且只會在出現異常發生。

此預防措施是小應用程序中的基礎知識,但存在許多其他避免SQL注入的方法。

+0

我' m使用重要數據,所以我將使用哈希或其他強大的方法,感謝您的想法,對不起,我買了你的時間 – 2013-04-24 13:03:15

+0

散列只適用於密碼,如果發生任何錯誤,你會返回敏感數據,如表和列名稱,這是SQL注入。我建議你驗證輸入,如果你沒有時間來避免SQL注入,希望這個幫助;-) – 2013-04-24 13:10:05