2017-11-04 3 views
0

Ich habe ein Problem mit mycode '=' 'oder'Bypass Login-Code php

$connect= mysqli_connect($host, $user, $password, $database); 

if (isset($_POST["sub"])){ 
    $userr =$_POST["username"]; 
    $passs =$_POST["password"]; 
    $password = hash('sha256', $passs); 
    $query="select * from user WHERE username='$userr'AND password='$password'";  

    $run=mysqli_query($connect,$query); 

         if(mysqli_num_rows($run)) 
    { 
     header("Location: index.php"); 
     $_SESSION['username']=$userr; 
     exit; 
    } 
    else { 
     $pri ='<center><br/> error </center>'; 
    } 
} 
mysqli_close($connect); 

so, wenn jemand tun Bypass '=''or' verwendet, wird es

index.php gehen, weiß ich nicht wirklich wie man es beheben ..

+0

Ja, Sie sollten '$ userr' NICHT direkt in Ihrer Abfrage verwenden. Die Umgehung ist call sql injection, verwende vorbereitete Anweisungen oder entkomme zumindest deiner Eingabe. – jh1711

Antwort

1

gerade richtig die $userr und $password Variablen für die Verwendung in sQL-Anweisung wie folgt entkommen:

$query="select * from user WHERE username='".mysqli_real_escape_string($connect, $userr)."' AND password='". mysqli_real_escape_string($connect, $password)."'"; 

Sie können PHP mysqli sql Injektion für weitere Informationen suchen.

+0

Lesen Sie das Handbuch http://php.net/manual/en/mysqli.real-escape-string.php, dann können Sie Ihre Antwort entsprechend anpassen. Was du gepostet hast, wird nicht funktionieren. Ich kann nicht verstehen, warum deine Antwort akzeptiert wurde, aber nur für dich. Entschuldigung, aber das ist nur die einfache Wahrheit der Sache. –

+0

Danke, feste mysqli_real_escape_string Parameter. – edgars