私はシステムのログインユニットをテストしていました。私のシステムは、このように設計されて -SQL、Microsoft SQl
ユーザーは、ユーザーID入力した場合 - 合格ABCDとパスワード、サーバは、これらのパラメータを受け取り、SQLコマンドを準備し、Microsoftデータベース -
select password from UserInformationTable where userid = 'abcd';
返された値にそれを発射します指定されたパスワードパスと比較され、結果がクライアントに送信されます。
私は成功し、次の方法を使用してシステムに分割 - ><abcd1 or drop table UserInformationTable
-
ユーザーは、ユーザーIDを入力します。これがうまくいって、私の完全なUserInformationTableが落ちました。
このようなハッキングの問題をうまく処理する方法はありますか。 1つの方法は、ユーザーIDで 'または'部分文字列を検出することですが、これは非常に優雅ではありませんでした。私がノーを制限できる方法はありますか? SQLのステートメント内のクエリの?
おかげで、よろしく、 Radz
実際にパラメータを使用しているのか、クエリの文字列を連結していますか?また、このMySQLまたはSQL Serverはどの言語を使用していますか? –
SQLインジェクションを読む。そして、平文のパスワードを保存するのがなぜ悪いのかを読んでください。次に、今日のCodingHorror.comを読んで、認証のために第三者を活用することがどのように良いルートになるのかをお読みください。 – Joe
SqlParameters [helplink](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx)を使用する必要があります。 – Raghuveer