2017-06-11 16 views
-1

ユーザー名とパスワードの両方でログインページを作成したいだけでなく、セキュリティを強化するために余分なキーを追加するだけです。#PHP:mySQLi_query()内にANDを2つ使用してください

これは私がこれまでにそれを作った私のコードです:

$query = mysqli_query($connection, "Select * FROM Password WHERE (Name LIKE '%$name%' AND Pass LIKE '%$pass%') AND Key LIKE '%$key%'"); 

を私はName='$name'ような構文を持つ、ともなし括弧でなく、任意の効果なしでも試してみました。

私はそれを動作させる方法はありますか?

ありがとうございます!

+0

あなたはプレーンテキストで**パスワードを保存している**。 'Name' **に' LIKE'マッチをしています。あなたは 'password'(!!!!!)**で' LIKE'マッチをしています**;あなたのコードは** SQLインジェクション**に対して脆弱です。 ...もう1つのプレーンテキストのパスワード 'key'(別のSQL注入可能な' LIKE'クエリ!!)を追加するとセキュリティが向上すると思いますか?私はあなたが一歩踏み込んでこの作業をやり直し、パスワード/ SQLセキュリティの基本原則を読んでいく必要があると思います。 –

+0

しかし、私は道で、パスワードとキーの両方で、私がここで言及しなかったいくつかの暗号化を使用しました...彼らはまた、mysqlの注射で浸透することができますか? –

+0

誰かが[Robert]という名前を入力するとどうなりますか? DROP TABLEのパスワード。 --'](https://xkcd.com/327/)?あなたのコードは安全ではないので誰でもあなたのサーバ上で*任意のSQL *を実行できます。入力をサニタイズするか、プリペアドステートメントを使用します。 –

答えて

0

なぜあなたはパスワードとユーザー名のようにデータベースの値と正確に一致する必要がありますか?

使用この

$query = mysqli_query($connection, "Select * FROM Password WHERE Name='$name' AND Pass='$pass' AND Key='$key'"); 

それをシンプルに保つ...

+1

Nice SQLインジェクションの脆弱性... –

関連する問題