首先我發現了幾個類似的主題,但並未完全回答我的所有問題。參數的安全性如何,完全保護您的數據庫的最佳方式是什麼
我的第一個問題,如果我用這樣的代碼:
MySqlCommand cmd = new MySqlCommand("SELECT `productnummer`, `NAAM`, `TYPE` `OMSCHRIJVING`, `Product-ID`, `Barcode` FROM `orders`.`producten` where (`productnummer` like(@variable) or `naam` like @variable or `type` like @variable or `omschrijving` like @variable or `product-id` like @variable or `barcode` like @variable) "and `uit assortiment` = 0");
cmd.Parameters.Add(new MySqlParameter("@variable", '%' + textBox1.Text + '%'));
如何參數是安全的,如果我能(據我所知是一個SQL語法)定義我用SQL%變量,。 這不是說如果用戶輸入%或*或他們自己的東西,它會工作嗎?
我的第二個問題:
MySqlCommand cmd = new MySqlCommand("SELECT `user-id` FROM `orders`.`werknemers` WHERE username = @username and `password` = @password");
cmd.Parameters.Add(new MySqlParameter("@username", username));
cmd.Parameters.Add(new MySqlParameter("@password", password));
,如果我有一個包含用戶名和密碼(密碼哈希明顯)的表的數據庫。 我的應用程序有一個文本框,用戶可以在其中輸入用戶名和密碼。如上所示,密碼將被散列並且這些數據將被髮送到數據庫。 如果數據庫返回一個用戶ID,我知道這個用戶存在,我可以使用用戶ID進一步溝通,如果沒有很好的東西顯然在錯誤的
中鍵入這是一種安全的方式來做到這一點?或者有更好的方法嗎?
一般來說,這一切都歸結爲: 什麼是最安全的方式與c#中的數據庫通信?
對我來說很好 – musefan
你做得對。準備好的帶參數的語句可以防止任何類型的SQL注入 –
如果您有兩個問題,請發佈兩個問題。 –