2016-12-08 6 views
0

ウェブページを使用して、認証のためにユーザ名とパスワードを入力する必要があるとします。WebページのSQLインジェクションについての問い合わせ

ユーザ名名 "ABS"、パスワードは "1234abcd" です - あなたはあなたのプロフィールへのエントリを得ることができます。

しかし、私の質問は、なぜ私は入力「腹筋 -」場合ということですユーザ名フィールドとパスワードなしで、それはまだ私のプロフィールページを返しますか?

舞台裏でサーバー、SQL、ユーザーとは何が起こっていますか?

私はちょうどこれを理解するようです。助けてくれてありがとう。

+1

コードなしで誰もお手伝いできません。フレームワーク?ログインプロセスですか? –

+0

これが起こった場合、サーバー側のコードはひどく壊れています。 – Thilo

+0

[小さなボビーテーブル](https://xkcd.com/327/) – Barmar

答えて

0

あなたは明らかに、エスケープせずにSQL文字列にパラメータを代入しています。あなたの入力が置換された後

$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; 

だから、結果は次のとおりです:

SELECT * FROM users WHERE username = 'abs' --' AND password = '' 

あなたが入力したユーザー名での引用符は、文字列を終了されたコードは、おそらくのようになります。その後、--がコメントを開始するので、残りのクエリは無視されます。クエリを次のように変換しました。

SELECT * FROM users WHERE username = 'abs' 

パスワードを確認しなくなりました。

+0

私は理解していますが、あなたはどのようにこれから身を守りますか? – user3023117

+0

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – Barmar

+1

**関連**サイドバーの最初の質問です。それは、SO上で最もアップした質問の一つです。どのようにそれを逃すことができますか? – Barmar

関連する問題