2016-09-15 3 views
-5

私はSQL注入が可能なアプリケーションを作成する必要がありますが、SQL注入を可能にすることはできません。私はSQLにそれを注入するためにすべてを試みたが、私は成功しなかった。そのコメントのために、admin'#のようなユーザ名を書くことが可能です。これはなぜSQLに注入できないのですか?

私があなたを助けてくれることを願っています。私のコードはちょうど下にあります。

<?php 
    include('include/config.php'); 
    include('parts/header.php'); 

    $submit = $_POST['submit']; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if ($submit) { 
     if(!empty($username OR !empty($password))) { 
      $sqlQuery = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password'"); 

      if(mysql_num_rows($sqlQuery) == 1) { 
       // Success - admin'# 
       echo "LOGGEDIN"; 
       $_SESSION['loggedin'] = 1; 
      } 
      else { 
       echo "Wrong password or username"; 
      } 
     } 
     else { 
      echo "You didn't fill every field."; 
     } 
    } 
?> 

<div id="container"> 
    <form action="login.php" method="POST"> 
     <input type="text" name="username" placeholder="Type user name..."> 
     <input type="password" name="password" placeholder="Type password..."> 
     <input type="submit" name="submit" value="Log in"> 
    </form> 
</div> 
+1

ホストされていますライブサイトはどこか? – RamRaider

+0

あなたのAND条件は常に偽にします –

+3

あなたの注射は何でしたか? – Phiter

答えて

-9

あなたは、変数を確保するためにmysql_real_escape_string機能を使用することができます。

$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 
+0

私の割り当ては安全ではないが、コードはSQLインジェクションできないアプリケーションを作ることです:/ –

+0

htmlspecialchars ()。 1stは<のような特殊文字を<のように変換しますが、これは<には表示されますが実行されません。 2番目のタグはすべてのタグを削除します。 – Decoder

+0

このリンクを確認するhttp://stackoverflow.com/questions/6857817/a-php-function-to-prevent-sql-injections-and-xss – Decoder

-2
<?php 
include('include/config.php'); 
include('parts/header.php'); 


$submit = $_POST['submit']; 
$username = (int)$_POST['username']; 
$password =(int)$_POST['password']; 

if ($submit) { 
    if(!empty($username OR !empty($password))) { 
     $sqlQuery="SELECT * FROM users WHERE user_login = '$username' AND password = '$password'"; 

     //SELECT * FROM `wp_users` WHERE `user_login`='1' OR '1' = '1' AND `user_pass`='1' OR '1' = '1' 
     //$sqlQuery = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password'"); 
     echo $sqlQuery; 
     exit; 
     if(mysql_num_rows($sqlQuery) == 1) { 
      // Success - admin'# 
      echo "LOGGEDIN"; 
      $_SESSION['loggedin'] = 1; 
     } else { 
      echo "Wrong password or username"; 
     } 
    } else { 
     echo "You didn't fill every field."; 
    } 
} 
?> 

<div id="container"> 
    <form method="POST"> 
     <input type="text" name="username" placeholder="Indtast brugernavn.."> 
     <input type="password" name="password" placeholder="Indtast kodeord.."> 
     <input type="submit" name="submit" value="Log ind"> 
    </form> 
</div> 

あなたのクエリの出力は、これは上でこれと常に真、

SELECT * FROM wp_users WHERE user_login = '7' AND user_pass = '7' 
+0

Doenstの仕事:/間違ったパスワードのステートメントを与えます。 –

+0

リンクを確認しましたか? –

+0

なぜ、私は下投票の理由がありますか? –

関連する問題