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

tobrukDk
tobrukDk (5.045 point. Point ude: 150)


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 (18.740 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 (5.045 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 (5.045 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 (5.045 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 (18.740 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 (5.045 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.078.374 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.078.374 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.078.374 point)
Det er vist funktionen til SHA-256 i PHP.

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

tobrukDk
tobrukDk (5.045 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.078.374 point)
Hvorfor pokker gaa efter en ikke optimal loesning??

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

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

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

arne_v
arne_v (1.078.374 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 (5.045 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.078.374 point)
finde hvad??

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

tobrukDk
tobrukDk (5.045 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 (5.045 point)
Arne_v og The_Buzz ligge et svar?

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

tobrukDk
tobrukDk (5.045 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

PHP grab content fra en URL og håndtere det

Oprettet den 18. december 2014 kl. 11.53
zombien giver 60 point for svar | Giv et svar »

vil ikke vise ting fra databasen

Oprettet den 18. december 2014 kl. 07.25
fire-fox giver 100 point for svar | Giv et svar »

SESSIONS i JOOMLA !

Oprettet den 18. december 2014 kl. 00.03
dankerlinnet giver 30 point for svar | Giv et svar »

Seneste guides

Malwarebytes version 2.0.3.1025
Find ejeren af et vilkårligt domæne
Opret BOOTBAR USB pen ...





Computerworld

Teaser billede

På vejen hjem fra lufthavnen opdager jeg at min telefon via Bluetooth prøver at forbinde med min bil - og Bluetooth har aldrig været aktiveret på den telefon

På vejen hjem fra lufthavnen opdager jeg at min telefon via Bluetooth prøver at forbinde med min bil - og Bluetooth har aldrig været aktiveret på den telefon

CIO

Teaser billede

Skat sparer 100 millioner kroner med ny it-indkøbs-politik: Så enkelt kan det gøres

Med en spritny udbudsfabrik har Skat præsteret at spare 100 millioner kroner på it-driftsudbud. Læs her, hvordan Skat har strømlinet sine udbudsproces.

Comon

Teaser billede

Stortest: Her er de bedste gratis antivirus-programmer

Kan gratis sikkerhedssoftware virkelig beskytte din pc? Svaret er ja, hvis du vælger det rette produkt. Læs her en test af de mest pålidelige gratis sikkerhedsprogrammer.

Channelworld

Teaser billede

Faneflugt blandt Microsofts danske partnere: Fylder hylderne med Microsoft-rivalers produkter

Massevis af danske forhandlere af Microsofts klassiske økonomisystem C5 er begyndt at fylde hylderne med produkter fra Microsofts rivaler. "Det virker som om, at Microsoft mere eller mindre...

White paper

Teaser billede

Sikkerhed og KVM-switching

Få svar på de sikkerhedsspørgsmål, der opstår ved brug af KVM-switche, og få strategier til at imødegå problemerne.



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