Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 12:34 Der er 10 kommentarer og
1 løsning

Kryptering af login - md5?

Hej,

jeg har kodet følgende loginscript, som fungerer fint nok. Det eneste jeg godt kunne tænke mig var, at få det krypteret. Jeg har prøvet at kigge på md5, men kan ikke helt få det til at spille. Er der en der kan hjælpe mig?

SCRIPTET:
<?php
session_start();
if(isset($_POST['submit'])) {

    $sql_host = "localhost";
    $sql_user = "root";
    $sql_passwd = "";
    $db = "shop";

    mysql_connect($sql_host,$sql_user,$sql_passwd)or die (mysql_error());
    mysql_select_db($db)or die (mysql_error());

    if ($_POST['username']<>"" && $_POST['password']<>"") {
        $result = mysql_query("SELECT * FROM ejerinformation WHERE username = '".$_POST['username']."'");
        if (isset($result)) {
       
            $user = @mysql_result($result,0,'username');
            $usercode = @mysql_result($result,0,'password');
       
            if($user==$_POST['username'] && $usercode==$_POST['password']) {
                $_SESSION['user'] = $user;
                header("Location: index.php");
            }
            else {
                $wrongusr = 1;
            }
        } else {
            $wrongusr = 1;
        }
    } else {
        $wrongusr = 1;
    }
}
?>
<HEAD>
<TITLE>ADMINISTRATION</TITLE>
<STYLE TYPE="text/css">
input        {border-style: solid; border-width: 1px; border-color: #393939; background-color: #ffffff; font-family: verdana; font-size: 11px; color: #393939;}
</STYLE>
</HEAD>
<BODY bgcolor="#2A4E5B">
<FORM ACTION='<? $php_self ?>' METHOD='post'>
<TABLE HEIGHT="100%" ALIGN="center" WIDTH="400">
<TR>
    <TD VALIGN="middle">
    <TABLE HEIGHT="100" WIDTH="100%" VALIGN="middle" ALIGN="center" CELLSPACING="0" cellpadding="10">
    <TR>
    <TD VALIGN="top" COLSPAN='2' ALIGN="center">
    <P><FONT FACE="century gothic, verdana" SIZE="2" COLOR="#f2f2f2"><B>LOGIN TIL KONTROLPANELET</FONT>
    </TD>
    </TR>
    <TR>
    <TD BGCOLOR="#dedede" VALIGN="middle" STYLE="border-style: solid; border-width: 1px; border-right-width: 0px; border-color: #000000; padding='10px;'">
    <FONT FACE="verdana" SIZE="1" COLOR="#000000">Brugernavn<BR><INPUT TYPE="text" SIZE="10" MAXLENGTH="40" NAME="username"></FONT><BR>
    <FONT FACE="verdana" SIZE="1" COLOR="#000000">Adgangskode<BR><INPUT TYPE="password" SIZE="10" MAXLENGTH="10" NAME="password"></FONT><BR><BR>
    <INPUT TYPE='submit' VALUE='Login' NAME='submit'>&nbsp;&nbsp;<INPUT TYPE='reset' VALUE='Nulstil' NAME='reset'><P></P>
    </TD>
    <TD VALIGN="top" ALIGN="center" BGCOLOR="#dedede" STYLE="border-style: solid; border-width: 1px; border-left-width: 0px; border-color: #000000; padding-top: 15px; padding-right: 15px;"><img src="../gfx/logon.gif" width="90" height="87" alt="Venligst log på administrationen"></TD>
    </TR>
    <?
    if(isset($wrongusr)) {
    echo "<tr>";
    echo "<td colspan='2' valign='top' bgcolor='#F2F2D7' style='border-style: solid; border-width: 1px; border-top-width: 0px; border-color: #000000; padding: 10px;'>";
    echo "<font face='verdana' size='3' color='#000000'><b>Loginfejl</b></font><br>";
    echo "<font face='verdana' size='1' color='#000000'>Brugernavn eller adgangskode blev ikke indtastet korrekt. Prøv venligst igen.</font>";
    }
    ?>
    </td>
    </tr>
    </TABLE>
</td>
</tr>
</TABLE>
</FORM>
</BODY>
Avatar billede bromer Nybegynder
07. februar 2005 - 12:38 #1
Du havde ikke behøvet at paste så meget. Folk har næppe brug for alt dit HTML :) Hvis du vil benytte MD5'ede passwords skal du køre MD5 funktionen på passwordet i PHP og sammenligne det med det password du har gemt i databasen (som naturligivs også skal være MD5-hashed). Læg dog mærke til at md5 ikke er en krypteringsmethode men en hash, hvilket vil sige at der ikke findes en omvendt funktion til den. Du kan altså ikke genstabe den orginale streng udfra en md5 hash.

Rune
Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 12:51 #2
Jeg tænkte jeg ville vise det hele, så folk kunne se HELE sammenhængen :-)

Vil det sige, at jeg skal finde ud af hvad eksempelvis passwordet "password" er krypteret som MD5 og så sætte det ind i databasen?

Jeg har i mit administrationsmodul lavet to felter, så jeg kan skifte brugernavn og adgangskode når jeg ønsker det. Det foregår ved at jeg blot indtaster hhv. nyt brugernavn, og ny adgangskode, klikker på opdater og så er det rettet. Det kan jeg vel så ikke mere? Skal jeg så indtaste det krypterede password?
Avatar billede bromer Nybegynder
07. februar 2005 - 12:56 #3
Pointen er lidt at du skal være klar over, hvordan du rent faktisk gør dit system mere sikkert. Når brugerprofiler bliver oprettede indtaster de et password. Dette gemmes i databasen som en Md5 hash. Når du vil undersøge om brugeren senere indtaster det korrekte password laver du det nyindtastede til en md5-hash og sammenligner det med hvad du har i databasen..

Denne process med at hash'e et password bliver dog udelukkende gjort i backend-delen, hvormed det stadig sendes som klartekst mellem en brugers browser og dit loginscript. Derfor vil det stadig være muligt for tjediemand at sniffe dit password.
Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 13:06 #4
Ok. Så i bund og grund er metoden ikke så sikker som man tror? :-(

Hvilke alternativer vil du foreslå? .htaccess eventuelt?
Avatar billede bromer Nybegynder
07. februar 2005 - 13:25 #5
Den tilføjer et sikkerheds aspekt idet det er uheldigt, hvis folk fik adgang til en database, hvor alle passwords ligger i klartekst. Så er det bedre at de ligger som hashes). Hvis du vil gøre det sikkert skal du udover at have passwords gemt i hash'et format også have krypteret det dataflow der forstår mellem browser og dit script. Det kan f.eks. gøres via SSL, men jeg tror måske det er at skyde lidt over målet i dit tilfælde.
Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 13:31 #6
Hmmmm.... Det er lidt skod :-)

Hvis du mener at det er at skyde over målet med SSL kryptering, så mener du som alternativ, at jeg er kommet "et godt stykke vej" med hashet format af passwordet i databasen?
Avatar billede bromer Nybegynder
07. februar 2005 - 13:47 #7
For de fleste formål ville jeg mene at det var tilstrækkeligt at du hashede passwords så det ikke er muligt at få en komplet liste over passwords hvis man får adgang til din database.
Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 14:07 #8
OK. Du skal have tak for dit input - jeg blev klogere, trods alt ;-)

Smid et svar.
Avatar billede bromer Nybegynder
07. februar 2005 - 14:53 #9
danke
Avatar billede steenolsen1 Nybegynder
07. februar 2005 - 15:13 #10
Bitte
Avatar billede olebole Juniormester
07. februar 2005 - 19:15 #11
<ole>

Som du kan se, er heller ikke Eksperten på SSL - og den er zq da så sikker, som den kan blive. Her kan man ikke engang komme i nærheden af sitet, hvis man er bruger og gerne vil logge ind  :D

/mvh
</bole>
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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