2

パスワードの種類はチェックしません。パスワードは4桁のunsignedintとして定義されている可能性があり、ユーザーが自分のパスワードを4桁のunsigned int以外に変更しようとすると、エラーが発生する可能性があります。

もしそうなら、どのようなエラーですか?単なるエラーメッセージですか、それともこれが主要なセキュリティ問題になる可能性がありますか?誰かがこれに対するオーバーフロー攻撃をバッファリングできますか?

4

2 に答える 2

1

文字列の連結の代わりにパラメータを使用することを検討してください。SQLインジェクション攻撃を受ける可能性があります

于 2012-10-21T20:53:35.930 に答える
1

ここで大きなセキュリティ問題が発生する可能性があります。単なるエラーメッセージではありません。SQLインジェクションの詳細をご覧ください。単純なルールは、文字列のユーザー入力を常にサニタイズして、適切なタイプであることを確認する必要があるということですが、さらに重要なのは、意図を迂回してDBにハッキングしないことです。

単純なGoogle検索は、たとえばこのサイトを返します。

.NETの場合SqlParameter、SQLクエリを形成するために文字列を連結するよりも使用する方が適切です。SqlParameterSQLインジェクションからあなたを守ります...

using (SqlCommand cmd = new SqlCommand("UPDATE tblUser SET Password = @password WHERE CustomerID=@custID", conn))
{
   cmd.Parameters.Add(new SqlParameter("password ", newPassword));
   cmd.Parameters.Add(new SqlParameter("custID", custID));
...
于 2012-10-21T20:56:17.253 に答える