2017-05-01 2 views
0

ログインフォームを作成しようとしていますが、DBにパスワードをMD5 $ password = md5($ _ POST ['password'])として保存しています。しかし、私はパスワードを使用しようとしています。SELECT * FROM *******ここでusername = '$ username'とpassword = '$ password'ですが、これは動作しません。私が考えることができるのは、それをmd5として保存し、プランテキストを選択することだけです。あなたのコードが表示されていないから、あなたはそのためのコードは、SQL-インジェクションに対して脆弱と思われる、いくつかの適切な変数にエスケープを行う場合MySQLはmd5を選択します

+0

パスワードハッシュにMD5を使用しないでください。それは大いに不安です。 – ceejayoz

答えて

0

あなたは、しかし、

"SELECT * FROM ******* WHERE username='$username' AND password='".md5($password)."'" 

を使用することができます。変数にクエリを投げる前に、変数を正しくエスケープする必要があります。

クエリが完全に有効である、と彼はパスワードを知らなくても、そのユーザでログインできるようになります

SELECT * FROM ******* WHERE username='admin' -- $username' AND password='".md5($password)."'" 

のように終わるように、あまり詳細に入るがなければ、誰かは、ユーザー名を入力することができます。

+0

私はこれを初めて知りました。どこから始めたらいいのか分からず、他の人がそれをやっているのを見たことがあるので、どうやってそれをやっていくのですか? –

+0

@RyanJ Google for "SQL-Injection"は、どのように動作し、どのように回避できるか、多くの例がわかります。 – dognose

+0

私はpassword = '"。md5($ password)を試しました。"それは今ページを誤って動作していない。それは引用符、何か考えて何かを持っていると思う? –