Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie kann bcrypt für User Daten mit PHP/MySQL/JSON verwendet werden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie kann bcrypt für User Daten mit PHP/MySQL/JSON verwendet werden

    Hi,

    ich entwickle gerade eine Android App und benutze dazu PHP/MySQL/JSON für die User-Registrierung sowie den Login. Nun wollte ich bcrypt oder ein anderes password encryption Verfahren nutzen, um die Daten zu nutzen.

    Ich bin ein Anfänger was PHP betrifft. Zwar ist es möglich mittels crypt Befehl die Daten verschlüsselt an meine Datenbank weiterzuleiten, aber ich hab nun keine Ahnung wie ich nun mit meinem vorhanden Skript mein hash Passwort wieder abfragen kann.

    Ich habe schon einige TUT gelesen, aber ich finde keines, was zu meinem Skript passt.

    Anbei meine Skripten. Vielleicht kann mir jemand von euch einen Tipp geben. Danke!

    Register:

    PHP-Code:
    <?php

        
    require("config.inc.php");

        if (!empty(
    $_POST)) {

            if (empty(
    $_POST['username']) || empty($_POST['password'])) {

                
    $response["success"] = 0;
                
    $response["message"] = "Please Enter Both a Username and Password.";

                die(
    json_encode($response));
            }

            
    $query        " SELECT 1 FROM users WHERE username = :user";
            
    $query_params = array(
                
    ':user' => $_POST['username']
            );

            try {
                
    $stmt   $db->prepare($query);
                
    $result $stmt->execute($query_params);
            }
            catch (
    PDOException $ex) {

                
    $response["success"] = 0;
                
    $response["message"] = "Database Error1. Please Try Again!";
                die(
    json_encode($response));
            }

            
    $row $stmt->fetch();
            if (
    $row) {

                
    $response["success"] = 0;
                
    $response["message"] = "I'm sorry, this username is already in use";
                die(
    json_encode($response));
            }

            
    $query "INSERT INTO users ( username, password ) VALUES ( :user, :pass ) ";

            
    $query_params = array(
                
    ':user' => $_POST['username'],
                
    ':pass' => crypt($_POST['password'])
            );

            try {
                
    $stmt   $db->prepare($query);
                
    $result $stmt->execute($query_params);
            }
            catch (
    PDOException $ex) {

                
    $response["success"] = 0;
                
    $response["message"] = "Database Error2. Please Try Again!";
                die(
    json_encode($response));
            }

            
    $response["success"] = 1;
            
    $response["message"] = "Username Successfully Added!";
            echo 
    json_encode($response);

        } else {
        
    ?>
            <h1>Register</h1> 
            <form action="register.php" method="post"> 
                Username:<br /> 
                <input type="text" name="username" value="" /> 
                <br /><br /> 
                Password:<br /> 
                <input type="password" name="password" value="" /> 
                <br /><br /> 
                <input type="submit" value="Register New User" /> 
            </form>
            <?php
        
    }


        
    ?>
    Login:

    PHP-Code:
    <?php

    require("config.inc.php");

    if (!empty(
    $_POST)) {

        
    $query 
                SELECT 
                    id, 
                    username, 
                    password
                FROM users 
                WHERE 
                    username = :username 
            "
    ;

        
    $query_params = array(
            
    ':username' => $_POST['username']
        );

        try {
            
    $stmt   $db->prepare($query);
            
    $result $stmt->execute($query_params);
        }
        catch (
    PDOException $ex) {

            
    $response["success"] = 0;
            
    $response["message"] = "Database Error1. Please Try Again!";
            die(
    json_encode($response));

        }

        
    $validated_info false;

        
    $row $stmt->fetch();
        if (
    $row) {

            if (
    $_POST['password'] === $row['password']) {
                
    $login_ok true;
            }
        }

        if (
    $login_ok) {
            
    $response["success"] = 1;
            
    $response["message"] = "Login successful!";
            die(
    json_encode($response));
        } else {
            
    $response["success"] = 0;
            
    $response["message"] = "Invalid Credentials!";
            die(
    json_encode($response));
        }
    } else {
    ?>
            <h1>Login</h1> 
            <form action="login.php" method="post"> 
                Username:<br /> 
                <input type="text" name="username" placeholder="username" /> 
                <br /><br /> 
                Password:<br /> 
                <input type="password" name="password" placeholder="password" value="" /> 
                <br /><br /> 
                <input type="submit" value="Login" /> 
            </form> 
            <a href="register.php">Register</a>
        <?php
    }

    ?>

  • #2
    Zitat von wundidajah Beitrag anzeigen
    Hi,

    Ich bin ein Anfänger was PHP betrifft. Zwar ist es möglich mittels crypt Befehl die Daten verschlüsselt an meine Datenbank weiterzuleiten, aber ich hab nun keine Ahnung wie ich nun mit meinem vorhanden Skript mein hash Passwort wieder abfragen kann.
    So wie das klingt willst du alle deine Daten verschlüsselt in die Datenbank legen, allerdings sollte dir klar sein das BCRYPT ein Hash ist, also nicht wieder in "Klartext" umgewandelt werden kann. Und das sehr unnütz für eine Datenbank ist, mal abgesehen vom Passwort.

    Wenn du dein Passwort hashen willst benutze
    PHP-Code:
    password_hash('Super Sicher!'PASSWORD_BCRYPT
    und speichere den Wert, den die Funktion zurückliefert, in deiner Datenbank.

    Anschließend beim Login vergleichst du den Hash aus der Datenbank mit der Eingabe des Benutzers:
    PHP-Code:
    password_verify('Super Sicher!'$hashAusDatenbank
    Wenn diese Funktion TRUE zurück liefert kannst du den Benutzer einloggen (also Cookie bzw Session setzen damit er auf gesicherte Seiten kann)
    - Laravel

    Kommentar


    • #3
      okay, danke.

      Und das Konzept kann ich auch in einer $query verwenden oder außerhalb der $query?

      Dabei hab ich noch Verständnisschwierigkeiten, da ich auch das beigefügte Skript noch nicht zur Gänze verstanden habe.

      Kommentar


      • #4
        Vielleicht solltest du dir erst einmal ein bisschen besser dem Umgang mit PHP lernen. Hier eine gute Seite. Vorallem wenn du deinen Script nicht mal verstehst... Vielleicht solltest du ihn einfach mal selbst programmieren Da bin ich mir auch sicher das dir hier einige helfen werden wenn du nicht weiter kommst.
        - Laravel

        Kommentar

        Lädt...
        X