いくつかのレガシー コードをデバッグしようとしています。すべてのユーザーのパスワード「password」を使用してシステムにログインできることがわかりました。ユーザー名「username」とパスワード「password」を使用してログインすることも、ユーザー名「username」とシステム内のいずれかのユーザーのパスワードを使用してログインすることもできます。
これは、列「username」または文字列「username」をログイン フォームのユーザー名フィールドと照合する SQL クエリに問題がある可能性があると考えさせます。(パスワードと同じ)。
ただし、残念ながら私たちは VB.net のユーザーではありません。この動作は、私たちが何をしても同じようです。元のコードは次のとおりです。
SQLcommand.CommandText = "SELECT level FROM tblUsers WHERE username = """ & username & """ AND password = """ & password & """"
SQLreader = SQLcommand.ExecuteReader()
"""
(すべてのsが何であるかはわかりません)
そこで、プログラミングと SQL に関する知識を使用して、次のようにしました。
SQLcommand.CommandText = "SELECT level FROM tblUsers WHERE `username` = """ & username & """ AND `password` = """ & password & """"
SQLreader = SQLcommand.ExecuteReader()
同様に、これは効果がありませんでした:
SQLcommand.CommandText = "SELECT level FROM tblUsers WHERE tblUsers.username = """ & username & """ AND tblUsers.password = """ & password & """"
SQLreader = SQLcommand.ExecuteReader()
それも効果がありませんでした。
問題は、これは SQL コードの問題ですか? それとも、間違った場所を探していますか? 私たちが間違った場所を探しているとは思いません。私たちは VB.net の専門家ではありませんが、それでもプログラミングはかなり上手です。また、ユーザー名とパスワードとして「ユーザー名」と「パスワード」を使用したクエリの出力 (トレース)SQLreader(0)
が返されます。これは、何かに一致していることを意味します。1
どんな助けでも素晴らしいでしょう。私たちが見落としているものはありますか?
ありがとう
(免責事項: このコードは本番環境では使用されません。今はリラックスしてください!)