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

tobrukDk
tobrukDk (6.465 point. Point ude: 0)


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 (20.010 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 (6.465 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 (6.465 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 (6.465 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 (20.010 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 (6.465 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.087.584 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.087.584 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.087.584 point)
Det er vist funktionen til SHA-256 i PHP.

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

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

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

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

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

arne_v
arne_v (1.087.584 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 (6.465 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.087.584 point)
finde hvad??

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

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

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

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

Billede fade

Oprettet den 30. august 2015 kl. 00.35
danieldims giver 15 point for svar | Giv et svar »

Danske tegn PHP 5.6 vises ikke korrekt.

Oprettet den 29. august 2015 kl. 11.52
fajens giver 30 point for svar | Giv et svar »

Problemer med utf8 data fra mysql db

Oprettet den 27. august 2015 kl. 14.10
kfisker giver 100 point for svar | Giv et svar »

Seneste guides

Fjern reklamer i Edge - Windows 10
Download/import af tabeller - IE
Manual til casio ur





Computerworld

Teaser billede

YouSee tvunget til at splitte bredbånd og tv op: Nu kan du droppe tv-pakken

YouSee vil fremover levere bredbånd uden at kræve, at kunderne samtidig køber en tv-pakke. Det er dog mest af alt et tiltag, der kommer, fordi TDC er tvunget til det.

CIO

Teaser billede

Tre ting du skal lære af sikkerhedsproblemerne hos Tesla, Chrysler og Volkswagen

Tesla, Chrysler og Volkswagen er alle ramt af sårbarheder, men selskaberne reagerer vidt forskelligt. Vi har samlet tre regler, som de burde have fulgt - og som kan hjælpe din virksomhed med at...

Comon

Teaser billede

Stortest af 17 grafikkort: Spilgrafik til ethvert budget

Hvordan vælger man det rigtige grafikkort til den rigtige pris? Denne stortest kan give dig svaret.

Channelworld

Teaser billede

HP splittes op i to danske selskaber: Her er de to nye topchefer i Danmark

HP har sat navne på, hvem der fra 1. november kommer til at stå i spidsen for de to nye danske HP-selskaber, som opstår, når hardwarekoncernen splittes i to.

White paper

Teaser billede

SDN 101: En introduktion til Software Defined Networking

I løbet af det seneste år har et af de varmeste emner i diskussionen af networking været software defined networking (SDN) og network virtualization (NV). Der er dog omfattende forvirring mellem...



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