質問とパラメータによってハッシュバイトと異なるのですか? 私のコードがあるクエリテキストとクエリパラメータの間で異なるハッシュパスワード
.CommandText = "update table.pass " _
& "set password = convert(varchar(12),HASHBYTES('MD5','" & TextEdit3.Text.ToUpper.ToString & "'),2) where userid='" + USER_ID + "'"
私の第二のコードは今最初のコードを使用してIAMため
.CommandText = "update table.pass " _
& " set password = convert(varchar(12),HASHBYTES('MD5',@pass),2) where [email protected]"
.Parameters.AddWithValue("@pass", TextEdit3.Text.ToUpper.ToString)
.Parameters.AddWithValue("@userid", USER_ID)
ある、と私はそれが原因SQLインジェクションに間違っていることを知っています。だから私は2番目のコードを使用したい。結果は最初のコードとは異なります。私が欲しいもの
は、私は、パラメータを使うのですか、ですが、私の前任者は、私はAddWithValue
がnvarchar
String
のためのデータを前提としていることを信じている最初の1
なぜあなたは '' STRING'にToString'を呼び出していますか?もっと重要なことに、なぜあなたは 'ToUpper'に電話していますか?そうすることで、複数の異なるパスワードを同じ値にハッシュさせることになります。 – jmcilhinney
@jmcilhinney他のアプリケーションプロジェクトでログインするために 'ToUpper'を使用しています。もし私がこのアプリでログインすることはできません。 'tostring'のために何の問題も生じていないと思います。 – chopperfield
'ToUpper'に関して、それがあなたのコントロールを超えているなら、あなたの手は結ばれていますが、それは非常に悪い実装です。そうすれば、パスワード「パスワード」と「パスワード」と「パスワード」はすべて同じと見なされますが、明らかにそうではありません。 'ToString'に関して、それは特に傷ついていませんが、それを使う良い理由はありませんので、そうしてはいけません。私はあなたのコードを破ることのないたくさんのことを考えることができますが、 'String'の' ToString'のように無意味なので、あなたがそれらのどれをしても見ません。 – jmcilhinney