Avatar billede snorres Nybegynder
01. juli 2004 - 20:01 Der er 14 kommentarer og
1 løsning

Kryptering af cookies til login..

Nogen der kan forklare mig hvordan jeg kryptere cookies så de kan bruges til at lave et login script med?

Og hvad er det der gør at ikke krypterede cookies ikke er sikre nok?

Og hvad er forskellen mellem et cookie login og et session login :)?
Avatar billede coderdk Praktikant
01. juli 2004 - 20:31 #1
Du kan lave "cookie login check" på flere måder...
Du kan gemme en userid i cookie'n og en checksum, hvis checksummen passer, så er han logget ind...

I login scriptet:

  $salt = "hemmelig streng";
  $userid = 123;
  setcookie( "userid", $userid, strtotime("+1 day") );
  setcookie( "checksum", md5( md5( $userid ) . $salt ), strtotime( "+1 day") );

Nu skal folk kende dit "salt" for at lave en gyldig cookie...
Du checker den såmænd bare med:

  if ( isset( $_COOKIE['userid'] ) && md5( md5( $_COOKIE['userid'] ) . $salt ) == $_COOKIE['checksum'] )
  {
    echo "Du er logget ind";
  }
  else
  {
    if ( !isset( $_COOKIE['userid'] ) )
    {
        echo "Du er ikke logget ind";
    }
    else
    {
        echo "Svindel og humbug! :)";
    }
  }
Avatar billede snorres Nybegynder
01. juli 2004 - 21:01 #2
Det lyder næsten for nemt :)
Prøvet lige :D
Og det er sikkert nok?
Avatar billede coderdk Praktikant
01. juli 2004 - 21:05 #3
Yeps, så længe folk ikke finder ud af hvad dit "salt" er :)
Avatar billede snorres Nybegynder
01. juli 2004 - 21:05 #4
kan man bruge
if ( !isset( $_COOKIE['userid'] ) && md5( md5( $_COOKIE['userid'] ) . $salt ) == $_COOKIE['checksum'] )
  {
  header "login.php?mode=fejl";
  }

Til at sende brugere videre til login siden med en besked der om at der er fejl, hvis det ikke passer??
har jeg gjort noget galt? :)
Gider ikke til at integere det hvis jeg har gjort noget galt :D:D
lidt doven, men sider på et 54k modem i frankrig, såå alt tager for evigt :D
Avatar billede snorres Nybegynder
01. juli 2004 - 21:06 #5
det kan de vel ikke bare lige finde ud af??
Avatar billede coderdk Praktikant
01. juli 2004 - 21:06 #6
!= ikke == ;) Hvis den er == så er den rigtigt ;)
Avatar billede coderdk Praktikant
01. juli 2004 - 21:07 #7
Det skulle ikke kunne med mindre de har adgang til din kildekode ;)
Avatar billede snorres Nybegynder
01. juli 2004 - 21:08 #8
fint fint :)
Prøver jeg så lige :D
Avatar billede coderdk Praktikant
01. juli 2004 - 21:12 #9
Forøvrigt burde din linie se sådan ud:

if ( !isset( $_COOKIE['userid'] ) || md5( md5( $_COOKIE['userid'] ) . $salt ) != $_COOKIE['checksum'] )
{
    header "login.php?mode=fejl";
}
Avatar billede snorres Nybegynder
01. juli 2004 - 21:27 #10
Har du evt msn?
Du kan adde mig hvis du vil, webmaster@goog.dk så kan du lige hjælpe med det sidste der, kun hvis du vil selvfølgelig ;)

Har lige hurtigt bikset et validerings script sammen, hvis nu jeg vil have at det tjekker om det er pass wller navn den er galt med, hvordan gør jeg så lige det :)?


<?php
mysql_connect("localhost","tralala","tralala");
mysql_select_db("tralala");

$query = mysql_query("SELECT * FROM LoveHinaUSERS WHERE Nickname='$Nickname' AND Password='$Password'");
$r = mysql_fetch_array($query);
if (mysql_num_rows($query) == "0"){
    header("location: login.php?mode=fejl");
}
else {
  $salt = "tralala";
  $userid = $r[ID];
  setcookie( "userid", $userid, strtotime("+1 day") );
  setcookie( "checksum", md5( md5( $userid ) . $salt ), strtotime( "+1 day") );
  header("location: index3.php");
}
?>
Avatar billede coderdk Praktikant
01. juli 2004 - 21:30 #11
$query = mysql_query("SELECT * FROM LoveHinaUSERS WHERE Nickname='$Nickname'");
if ( $r = mysql_fetch_array($query) )
{
    if ( $r['Password'] != $Password )
    {
        echo "Forkert password";
    }
}
else
{
    echo "Forkert bruger";
}
Avatar billede coderdk Praktikant
01. juli 2004 - 21:31 #12
Btw, jeg MSN'er ikke ;)
Avatar billede snorres Nybegynder
01. juli 2004 - 21:37 #13
tak :)
Ah why ik man :O
næsten noget til at teste det :D:D
Avatar billede snorres Nybegynder
02. juli 2004 - 13:29 #14
Hvordan henter jeg så id'en??
Nu har jeg fået login systemet til at virke :D:D Wuhu :D
Men jeg kan kun hente id'en som den krypterede versioN :S
jeg vil gerne hente id'en så jeg kan skrive noget ligendene:

$ID = $_COOKIE['UserId'];

$query = mysql_query("select * from LoveHinaUSERS WHERE ID = '$ID' order by id") or die(mysql_error());

Forstår du?
Avatar billede snorres Nybegynder
02. juli 2004 - 13:37 #15
Jeg fandt ud af det tror jeg, men ehm nu virker:

$salt = "XXXXX";
if ( isset( $_COOKIE['userid'] ) || md5( md5( $_COOKIE['userid'] ) . $salt ) != $_COOKIE['checksum'] )
{
header("location: login.php");
}
ikke :S den sender videre til login.php selv om man er logget rigtigt ind D:
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