2017-01-13 4 views
-3

私はプロジェクト用のログイン画面で基本的なWebサイトを作成しています。基本的なSQLインジェクションの脆弱性をテストしたいと思います。私は自分のデータベース内の情報を検索し、彼らにそれを印刷するには、ユーザー名とユーザーからパスワードやPHPのコード行を読み取るために、フォームを使用しています:あなたの助けを事前に基本的なSQLインジェクションの脆弱性について私のウェブサイトをテストするには?

if(isset($_POST['username'])&&$_POST['username']!=""&&isset($_POST['pass'] )&&$_POST['pass']!=""){ $sql="SELECT username,pass,email,name,surname,ADT,tel,address,bdate,gender FROM myusers WHERE username='".$_POST['username']."' AND pass='".$_POST['pass']."'";}

感謝を。私のコードに関する追加情報が必要な場合は、質問してください。

+0

あなたのコードは、テストなしですぐに脆弱であることがわかります。 –

+0

簡単に、ちょうど1つの質問をしてください: "*完全にパラメータ化されていない*すべてのステートメントはありますか?" - 答えがイエスならば、あなたのコードは**非常に脆弱です**。あなたの例では明らかです。誰かがユーザー名を投稿したと想像してください。 DROP TABLE myusers; - '..ところで:**決してこれまで!プレーンテキストのパスワードを保存する!** 'password_hash()'と 'password_verify()'を使う! *(普通のパスワードを保存するたびにrootが/ dev/nullに子猫を移動させる)* –

答えて

0

私はいくつかのフィドラー(私はtelerikフィドラーをお勧めします)を使用し、手動でリクエストを作成することを提案します。そのプログラムを使用して、SQLインジェクション要求を準備し、サーバーの応答を確認することができます。こっちには、いくつかの基本的な例を持っている:

0+1, 2-1, (...) - if it return specific record, your code is vulnerable 
In your case check this: 
x' or 'x'='x'   
x' or 'x'='x' -- 
1 AND 1=(SELECT 1), 1 AND 1=(SELECT 0) - check if subquery works 

あなたはまた、cheat sheetsql injection cheat sheetを確認することができます。

関連する問題