SSC Juniormester
06. november 2020 - 00:22 Der er 3 kommentarer

Ændre 'hashed' password

Hej ComputerWorld,

Efter at have rodet med dette problem i længere tid, vælger jeg nu at søge hjælp:

Jeg har denne kode, som virkede fint, før jeg 'krypterede' (hash) password i db

Men efter, får jeg konsekvent "koden er forkert"

<?php

require_once 'header.php';
session_start();
$con = new mysqli('localhost', 'robinsnest', 'xxxxxxxx', 'robinsnest');

$user=$_SESSION["user"];

if ($con->connect_errno) {
    echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}
if ($_POST["newPass"] == $_POST["confirmPass"]) {
    $stmt = $con->prepare("SELECT * FROM members WHERE user=? LIMIT 1");
    $stmt->bind_param("s", $user);
// execute
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        if ($_POST["currentPass"] == $row["pass"]) {
            $updateStmt = $con->prepare("UPDATE members SET pass=? WHERE user=?");
            $updateStmt->bind_param("ss", $_POST["newPass"], $user);
            $updateStmt->execute();
            $message = "Password changed successfully!";
        } else {
            $message = "Password is incorrect.";
        }
    }

}
echo $message;
?>

Er der en, der har forslag til, hvordan jeg laver en ændre-kode-applikation, når kodeordet er krypteret i databasen?
SSC Juniormester
06. november 2020 - 00:56 #1
(Bemærk koden er fiktiv, det er ikke en rigtig db)
Slater Ekspert
06. november 2020 - 07:29 #2
Denne linje vil jo naturligvis aldrig virke, når du har hashet dit password:
$_POST["currentPass"] == $row["pass"]

- Du kan ikke sammenligne et plaintext og et hashet password med almindelig ==
Men hvordan hasher du det da? Du viser ikke det mest relevante.

Mht. at ændre det, er det altid bare at oprette et nyt password og gemme det i stedet for det gamle. Hvis nogen har glemt deres password, kan du kun sende et nyt autogenereret til dem og bede dem rette det. Du kan aldrig sende dem det gamle password.
olsensweb.dk Ekspert
06. november 2020 - 08:58 #3
#0
kig på de fremhævet linjer
<?php
session_start();
include("debug.php");
require_once('connection.php');
if (isset($_POST["newPass"])) {
    $user = "rip"; // test
// $user=$_SESSION["user"]; // udkommenteret under test
    if ($_POST["newPass"] == $_POST["confirmPass"]) {
        $stmt = $con->prepare("SELECT * FROM members WHERE user=? LIMIT 1");
        $stmt->bind_param("s", $user);
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()) {
            if (password_verify($_POST["currentPass"], $row["pass"])) {   
            // if ($_POST["currentPass"] == $row["pass"]) {

                $updateStmt = $con->prepare("UPDATE members SET pass=? WHERE user=?");
                $hash = password_hash($_POST["newPass"], PASSWORD_DEFAULT);
                $updateStmt->bind_param("ss", $hash, $user);
                // $updateStmt->bind_param("ss", $_POST["newPass"], $user);

                $updateStmt->execute();
                $message = "Password changed successfully!";
            } else {
                $message = "Password is incorrect.";
            }
        }
    } else {
        $message = "de 2 nye password er ikke ens";
    }
}
?>


#2
>Men hvordan hasher du det da?
fra spørgerens tidligere spm ( https://www.computerworld.dk/eksperten/spm/1035126?k=8367025 ) må svaret være password_hash

>Hvis nogen har glemt deres password, kan du kun sende et nyt
sådan bør det også være, password må aldrig stå i klar text, i databasen, brugeren er jo logget ind når han ændre password (står i session), men om han skal angive det gamle password også? måske, det hindre andre går hen på maskinen brugeren er logget ind på, og ændre brugerens password.
der er jo en del der forlader maskinen uden at logge af / låse skærmen, så andre kan misbruger brugeren
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Fremtiden har aldrig set mere usikker ud for Intel: Her er det, der kan redde – og dødsdømme chip-kæmpen
Computerviews: Intels nyslåede topchef Pat Gelsinger står overfor en stribe rigtig svære beslutninger. Hvis han ikke træder varsomt, vil chip-giganten sandsynligvis sygne hen.
Computerworld
Akut mangel på chip tvinger verdens største bil-producenter til at drosle ned for produktionen af biler
Flere af verdens største bil-producenter er tvunget til at drosle ned for produktionen på grund af mangel på chip, som de ikke kan få leveret.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Microsoft i kæmpe dansk satsning - åbner tre store datacentre i Danmark
Microsoft lancerer kæmpe satsning fra hovedkvarteret i Lyngby. Selskabet åbner tre store bæredygtige datacentre på Sjælland.
White paper
Digital transformation tvinger organisationer til at nå deres digitale mål på nye måder
Allerede for to år siden hævdede nordiske virksomheder, at virksomhedernes konkurrenceevne og sågar overlevelse var afhængig af en vellykket digitalisering. De var klar, fulde af håb og på vej mod det digitale paradis. Hvordan gik det så? Hvor er de nu? For at finde ud af det, interviewede DigiPlex og Norstat 377 forretningsledere og IT-beslutningstagere fra organisationer fordelt over hele Danmark, Sverige og Norge om deres digitaliseringsfremskridt, om hvordan de har håndteret pandemien, og om hvordan IT understøtter eller står i vejen for indfrielsen af deres bæredygtighedsmål. DigiPlex kan nu dele en rapport med resultaterne fra undersøgelsen samt tanker om, hvordan man håndterer dem. De deler også nogle nyttige tips til, hvordan man skaber en pålidelig infrastruktur, der kan tilskynde til og understøtte ambitioner i den digitale økonomi. Læs mere i rapporten Nordic Data Center Trends 2020: Riding out the Storm.