Oprettet man. d. 19. november 2012 kl. 23:03:33

tobrukDk
tobrukDk (3.975 point. Point ude: 60)


Hash på password

Hej

Det er sådan at jeg har opret indlæg her;
http://www.udvikleren.dk/forum/39136/hash-paa-password/side3/

men Det er sådan at mit problem er at den vil gerne opret bruger med  crypt. lige nu ser password sådan her ud;


$6$j7Rd68RhKNx.6ccH$9lvRDdks.jx4hk7.YQ0hpvzPE22h/BZQ/9yXiwTMBV1Kx2xr2gbIZZJxYjeLrA41nL2WGjmt.FMQi877uOXrP1


sådan her ser det ud når man "opret en bruger",


function bruger_opret_siden(){
            if ($stmt = $this->mysqli->prepare('SELECT NULL FROM `bruger` WHERE `brugernavn` = ?'))
            {
                $stmt->bind_param('s', $brugernavn);
                $brugernavn = $_POST["brugernavn"];
                $stmt->execute();
                $stmt->store_result();
                $count = $stmt->num_rows;
                $stmt->close();
                if($count > 0)
                {
                    $user_found = 1;
                }
            }
            if(!isset($user_found))
            {
                if($_POST["pass"] != $_POST["gentag"])
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive ens password på siden..</li>";
                }
                if(empty($_POST["pass"]) && empty($_POST["gentag"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive et password på siden..</li>";
                }
                if(empty($_POST["navn"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive et Fornavn</li>";
                }
                if(empty($_POST["efternavn"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive et Efternavn</li>";
                }
                if(empty($_POST["land_by"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive en by</li>";
                }
                if(empty($_POST["hojde"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive en Højde</li>";
                }
                if(empty($_POST["email"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive en Email</li>";
                }
                if(empty($_POST["brugernavn"]))
                {
                    $errors = 1;
                    echo "<li id=\"check_not\">Angive en Højde</li>";
                }
               
                if(!isset($errors))
                {
                    $pb = null;
                       
                    include 'function/class.upload.php';
                    $handle = new Upload($_FILES["file"]);
                   
                    if($handle->uploaded)
                    {
                        //lidt mere store billeder
                        $handle->image_resize = true;
                        $handle->image_ratio_y = true;
                        $handle->image_x = 220;
                        $handle->Process("profil-img/store");
                       
                        //til profil billede lign..
                        $handle->image_resize = true;
                        $handle->image_ratio_crop = true;
                        $handle->image_y = 115;
                        $handle->image_x = 100;
                        $handle->Process("profil-img");
                       
                        //til profil billede lign..
                        $handle->image_resize = true;
                        $handle->image_ratio_crop = true;
                        $handle->image_y = 75;
                        $handle->image_x = 75;
                        $handle->Process("profil-img/lille");
                        $pb = $handle->file_dst_name;           

                    }
           
                $password = $_POST["pass"];
                $algorithm = '$6$'; //<--- Dette betyder SHA 512
                $salt = $this->generateSalt(16); //<--- SHA 512 bruger et 16 tegn langt salt
           
                $hash = crypt($password, $algorithm . $salt);

                if ($stmt = $this->mysqli->prepare('INSERT INTO `bruger`
                (`rank`, `email`, `brugernavn`, `password`, `profilbillede`, `profilbillede_godkendt`, `navn`, `efternavn`, `alder_d`, `alder_m`, `alder_aar`, `status`, `kon`, `seksualitet`, `land_by`, `hojde`)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'))
                {
                   
                    $stmt->bind_param('issssisssssiiisi', $rank, $email, $brugernavn, $password, $profilbillede, $pb_godkendt, $navn, $efternavn, $alder_d, $alder_m, $alder_aar, $kon, $seksualitet, $partnerstatus, $land_by, $hojde);
                    $rank = '1';
                    $pb_godkendt = '1';
                    $email = $_POST["email"];
                    $brugernavn = $_POST["brugernavn"];//C
                    $password = $hash;//C
                    $profilbillede = $pb;//C
                    $navn = $_POST["navn"];
                    $efternavn = $_POST["efternavn"];
                    $alder_d = $_POST["alder_d"];
                    $alder_m = $_POST["alder_m"];
                    $alder_aar = $_POST["alder_aar"];
                    $kon = $_POST["kon"];
                    $seksualitet = $_POST["seksualitet"];
                    $partnerstatus = $_POST["partnerstatus"];
                    $land_by = $_POST["land_by"];
                    $hojde = $_POST["hojde"];
                   
                    $stmt->execute();
                    $stmt->close();
                   
                    echo "godkendt";
                       
                    }
                    else
                    {
                        /* Der er opstået en fejl */
                        echo 'Der opstod en fejl i erklæringen til ligge i databasen: ' . $mysqli->error;
                    }
                }
            }
            else
            {
                echo "<li id=\"check_not\">Dette brugernavn er optaget!!</li>";
            }
    }

men der hvor password bliver salt m.v. gøre den her eller hvordan man skal beskrive det;



function generateSalt($length) {
        $alphabet = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        $alphabet_length = strlen($alphabet);
        $salt = '';
        for ($i = 0; $i < $length; $i++) {
            $salt .= $alphabet[rand(0, $alphabet_length - 1)];
        }
        return $salt;
    }


Så skal det også være sådan at bruger har mulighed for at log ind på siden med det crypt password som vi har opret i databasen. skal kun være muligt at log ind på siden med det password.


function godkendt_bruger_login(){
        if($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `password`, `rank`, `profilbillede`, `profilbillede_godkendt` FROM `bruger` WHERE `brugernavn` = ? AND `password` = ?'))
        {
        $stmt->bind_param('ss', $brugernavn, $password);
        $brugernavn = $_POST["brugernavn"];
        $password = crypt($_POST["pass"] . '$6$' . './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($id, $brugernavn, $password, $rank, $profilbillede, $profilbillede_godkendt);
        $stmt->fetch();
        $count = $stmt->num_rows;
        $stmt->close();
       
            if($count > 0)
            {
                $_SESSION["logged_in"] = true;
                $_SESSION["id"] = $id;
                $_SESSION["profilbillede"] = $profilbillede;
                $_SESSION["brugernavn"] = $brugernavn;
                $_SESSION["rank"] = $rank;
                $_SESSION["profilbillede_godkendt"] = $profilbillede_godkendt;
                $_SESSION["password"] = $_POST["password"];
   
               
                if($_SESSION["logged_in"] == true)
                {
                    echo "Godkendt";
                   
                }
                else
                {
                    echo "<p>Desværre prøve igen brugernavn eller adgangskode passe ikke med vores</p>";
                }
            }
            else
            {
                echo "<p>Skrive brugernavn og Password</p>";
            }
    }
    }



Så ind på log ind side/filen ser det sådan her ud;


    <?php
    /*
    * Giver admin adgang til se indhold på siden.
    */
    if(isset($_SESSION["rank"]) && $_SESSION["rank"] > 0) {
        $bruger = $mebe->brugerindhold_side();
    }
   
   
    /*
    * Hvis ingen af dem så få de bare adgang sådan her..
    */
    else{
    ?>
<form name="login" method="post" action="#">
    <h1>Log ind</h1>
    <p>Brugernavn</p><input type="text" name="brugernavn"/>
    <p>Password</p><input type="password" name="pass"/>
    <br />
    <input type="submit" name="Log_ind" value="Log ind" id="login">
    <?php
    if(isset($_POST["Log_ind"]))
    {
    $login = $mebe->godkendt_bruger_login();
    }
    ?>
    <ul>
        <li><a href="">Glemt Brugernavn</a></li>
        <li><a href="/opret-bruger/">Opret Bruger</a></li>
    </ul>
</form>
<?php
    }
?>


Det vil være super hvis du kun hjælp mig eller forklare mig hvad jeg skal gøre bedre. eller hvad skal gøre for du tror mit log ind system kan virker for mig?

Skrevet tir. d. 20. november 2012 kl. 08:09:44| #1

The_Buzz
The_Buzz (17.460 point)
www.lottostat.dk
Det er godtnok et langt kryptet password.

Har du prøvet SHA1 eventuelt med salt?
$salt1 = 'l3ooiu3rnonlafl23rkndsaknf';
$salt1 = 'UIEWI#IHUR€=)VU=)=)#/€';

$dbpassword_string = sha1($salt2.$_POST["pass"].$salt)

Skrevet tir. d. 20. november 2012 kl. 12:20:10| #2

tobrukDk
tobrukDk (3.975 point)
Kan jeg ikke også bare gøre sådan her;


$password = 'mypassword';
$hash = crypt($password);

Skrevet tir. d. 20. november 2012 kl. 12:30:04| #3

tobrukDk
tobrukDk (3.975 point)
Lige et svar jeg gjor sådan noget i den still som du vise mig:

bare sådan her


$password = sha1('ri629' . $_POST["pass"] . 'h1ry6328');

Skrevet tir. d. 20. november 2012 kl. 12:40:50| #4

tobrukDk
tobrukDk (3.975 point)
men vil det ikke været et stort hul i sikkerheden?

Skrevet tir. d. 20. november 2012 kl. 12:50:01| #5

The_Buzz
The_Buzz (17.460 point)
www.lottostat.dk
Sha1 er da det mest sikre "lægmands" kryptering i php

Sha1 kan du encrypt, men du kan ikke decrypte det.

Webmaster kender ikke password - og derfor kan det ikke hackes som det skete med sex.dk for nylig.

Derimod gemmer du en streng som er saltet og måske endda dobbelt saltet.

Check om bruger har lavet det rette password ved login:

if (sha1($salt2.$_POST["pass"].$salt) === $databaseentry) {
  echo 'Access granted';
} else {
  echo 'Access denied';
}

Skrevet tir. d. 20. november 2012 kl. 12:54:28| #6

tobrukDk
tobrukDk (3.975 point)
f.eks sådan her;


function godkendt_login()
    {   
        if ($stmt = $this->mysqli->prepare("SELECT `id`, `brugernavn`, `password`, `rank`, `profilbillede`, `profilbillede_godkendt` FROM `bruger` WHERE `brugernavn` = ? AND `password` = ?"))
        {
            $stmt->bind_param('ss', $brugernavn, $password);
            $brugernavn = $_POST["brugernavn"];
            $password = sha1('rir21551=638_hyeu!@?emerdsverv_3629' . $_POST["pass"] . 'h1red_d1515n@hd111dyn?y6328');
            $stmt->execute();
            $stmt->store_result();
            $stmt->bind_result($id, $brugernavn, $password, $rank, $profilbillede, $profilbillede_godkendt);
            $stmt->fetch();
            $count = $stmt->num_rows;
            $stmt->close();
           
            if($count > 0)
            {
                $_SESSION["logged_in"] = true;
                $_SESSION["id"] = $id;
                $_SESSION["profilbillede"] = $profilbillede;
                $_SESSION["brugernavn"] = $brugernavn;
                $_SESSION["rank"] = $rank;
                $_SESSION["profilbillede_godkendt"] = $profilbillede_godkendt;
               
                if($_SESSION["logged_in"] == true)
                {
                    if (sha1('rir21551=638_hyeu!@?emerdsverv_3629' . $_POST["pass"] . 'h1red_d1515n@hd111dyn?y6328') === $password) {
                          echo "godkendt";
                    } else {
                      echo '<p>desværre passer adgangskode ikke til det</p>';
                    }
                }
                else
                {
                    echo "Desværre prøve igen.";
                }
            }
            else
            {
                echo "Skrive et password eller brugernavn";
            }
        }
    }

Skrevet tir. d. 20. november 2012 kl. 21:07:32| #7

arne_v
arne_v (1.071.314 point)
SHA-1 er foraeldet idag. Brug SHA-256.

Skrevet tir. d. 20. november 2012 kl. 21:08:00| #8

arne_v
arne_v (1.071.314 point)
Det er meget vigtigt at bruge forskelligt salt for hver bruger.

Skrevet tir. d. 20. november 2012 kl. 22:49:25| #9


Skrevet tir. d. 20. november 2012 kl. 22:57:41| #10

arne_v
arne_v (1.071.314 point)
Det er vist funktionen til SHA-256 i PHP.

Skrevet tor. d. 22. november 2012 kl. 01:52:51| #11

tobrukDk
tobrukDk (3.975 point)
Okay men jeg gøre bare sådan her;


sha1('rir21551=638_hyeu!@?emerdsverv_3629' . $_POST["pass"] . 'h1red_d1515n@hd111dyn?y6328')



#The_Buzz ligge et svar som tak for hjælpen da ellers...

Skrevet tor. d. 22. november 2012 kl. 04:12:41| #12

arne_v
arne_v (1.071.314 point)
Hvorfor pokker gaa efter en ikke optimal loesning??

Skrevet tor. d. 22. november 2012 kl. 13:05:42| #13

tobrukDk
tobrukDk (3.975 point)
Hvad skal jeg så tag?

Skrevet tor. d. 22. november 2012 kl. 20:10:26| #14

arne_v
arne_v (1.071.314 point)
forskellig salt per bruger og SHA-256 evt. med flere iterationer

Skrevet fre. d. 23. november 2012 kl. 06:27:21| #15

tobrukDk
tobrukDk (3.975 point)
okay, men hvor kan jeg finde det hen?

Skrevet lør. d. 24. november 2012 kl. 02:03:35| #16

arne_v
arne_v (1.071.314 point)
finde hvad??

Skrevet søn. d. 25. november 2012 kl. 00:57:36| #17

tobrukDk
tobrukDk (3.975 point)
ligemeget, jeg har klart det, jeg fandt en video på youtube omkring det :)

Skrevet man. d. 26. november 2012 kl. 10:28:12| #18

tobrukDk
tobrukDk (3.975 point)
Arne_v og The_Buzz ligge et svar?

Skrevet tir. d. 04. december 2012 kl. 06:54:10| #19

tobrukDk
tobrukDk (3.975 point)
lige selv lige et svar.

Skriv et indlæg




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

Log ind

   


Seneste spørgsmål

Trying to get property of non-object in......... on line 48

Oprettet den 19. april 2014 kl. 10.49
MrPingWin1255 giver 60 point for svar | Giv et svar »

vil ikke have samme indhold ind på databasen

Oprettet den 16. april 2014 kl. 20.57
tobrukDk giver 60 point for svar | Giv et svar »

mellem 2 datoer

Oprettet den 16. april 2014 kl. 09.56
bongi giver 60 point for svar | Giv et svar »

Seneste guides

Malwarebytes version 2.0
Watermark et billede





Computerworld

Teaser billede

Afsløring: Det fedeste konsulenttrick er...

Klumme: Mogens Nørgaard har luret, hvad der er det allervigtigste konsulenttrick af dem alle.

CIO

Teaser billede

Kommunernes nye stærke it-boss: Her er mine planer

Efter en måned på posten har kommunernes nye stærke it-boss fået stillet skarpt på de kommunale it-udfordringer. Blandt andet fremhæver han, at vi nok vil se mere til kontroversielle offentlige...

Comon

Teaser billede

Test: HTC One M8 er en suveræn mobil og scorer topkarakter

I øjeblikket er der ingen tvivl om, hvem der er konge i Androidland. HTC scorer topkarakter med sin nye One M8, der er den bedste Android-mobil, som vi har haft på testbænken.

Channelworld

Teaser billede

It-milliardær: "Jeg er ikke nogen steder, hvor jeg ikke har kontrol"

It-milliardæren Ib Kunøe har ry for at være en af it-branchens hårde negle. I dette interview fortæller han, hvordan den militære baggrund og opvæksten som søn af en sønderjysk...

White paper

Teaser billede

Mobility og autentificering

Aladdin eToken er et stærkt token lifecycle management-system, som understøtter to-faktor-autentificering og fungerer med VPN og kryptering.


IT Kurser

Udgiver · © 2014 Computerworld A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger