Welkom, Gast. Je bent niet ingelogd.

Veilige Login (cookies)

Door Xikeon op 24 Dec 2006, 23:44

Hey,
ik zag Saven\'s tutorial voor een \'veilig\' login systeem en zag het commentaar erop.. Ik dacht, laat ik mijn manier eens zien.. :\')

Deze tutorial mag nergens anders gepost worden, ook niet met mijn toestemming Wat ben ik weer aardig he?

De scripts gemaakt in deze tutorial zijn niet getest, ik heb ze uit mijn hoofd geschreven. Mijn excuses dus voor enige fouten.
[strip]
Ten eerste, zoals saven al deed, is deze ook in cookies. En ja, die zijn veilig als je ze goed gebruikt, dus als je sessions wilt ga je maar andere troep tutorials zoeken..

Ten eerste ga ik eerst bedenken wat ik allemaal in de cookies ga opslaan:
Cookie Naam - Cookie Data
site_id - ID van de ingelogde
site_username - naam van de ingelogde
site_password - wachtwoord (in encryptie) van de ingelogde

Nu ik dat weet, ga ik een kleine functie schrijven die gaat kijken of je ingelogt bent.

1
2
3
4
5
6
7
8
<?php

function ingelogd()
{
     //de rest komt hier
}

?>

Was dat simpel of niet? :\') Nu gaan we eerst kijken of de cookies ALLEMAAL bestaan...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

function ingelogd()
{
     if( isset( $_COOKIE[ \'site_id\' ] ) && isset( $_COOKIE[ \'site_username\' ] ) && isset( $_COOKIE[ \'site_password\' ] ) )
     {
          //Alle cookies bestaan!
     }
     else
     {
          return false;
     }
}

?>

Als ze bestaan, gaan we kijken of ze ook echt kloppen met de data in de database. Ze moeten ALLEMAAL in dezelfde row gevonden worden. (En de password encrytie is aan jou, ik doe altijd sha1( md5( ) ) )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

function ingelogd()
{
     if( isset( $_COOKIE[ \'site_id\' ] ) && isset( $_COOKIE[ \'site_username\' ] ) && isset( $_COOKIE[ \'site_password\' ] ) )
     {
          $userCheck = mysql_query( \"SELECT * FROM users WHERE id=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_id\' ] ) . \"\' AND username=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_username\' ] ) . \"\' AND password=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_password\' ] ) . \"\'\" );
          if( mysql_num_rows( $userCheck ) == 1 )
          {
               return true;
          }
          else
          {
               return false;
          }
     }
     else
     {
          return false;
     }
}

?>

Nu als er dus 1 row is met de gegevens uit de cookies, ben je ingelogd. Dus als er 1 ding niet in orde is, ben je niet ingelogt.

Dan even een voorbeeld hoe je hem zou kunnen gebruiken:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

function ingelogd()
{
     if( isset( $_COOKIE[ \'site_id\' ] ) && isset( $_COOKIE[ \'site_username\' ] ) && isset( $_COOKIE[ \'site_password\' ] ) )
     {
          $userCheck = mysql_query( \"SELECT * FROM users WHERE id=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_id\' ] ) . \"\' AND username=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_username\' ] ) . \"\' AND password=\'\" . mysql_real_escape_string( $_COOKIE[ \'site_password\' ] ) . \"\'\" );
          if( mysql_num_rows( $userCheck ) == 1 )
          {
               return true;
          }
          else
          {
               return false;
          }
     }
     else
     {
          return false;
     }
}

if( ingelogd() )
{
     echo \'Je bent ingelogd, mijn vriend!\';
}
else
{
     echo \'Je bent niet ingelogt, of een vieze hackert!\';
}

?>

Agja, dat was mijn tutorial. Ik weet dat het niet veel of speciaal is maar het is dan jouw keuze geweest je tijd te versipillen (als je het niks vond)

Commentaar enzo is altijd welkom, veel plezier!

iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 25 Dec 2006, 16:48

Xikeon schreef:

Ik geef gewoon even mijn manier

Jouw manier die op 1 line verschil precies hetzelfde is als die van Saven ja

Xikeon
Geplaatst op: 25 Dec 2006, 16:07

Ik geef gewoon even mijn manier

iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 25 Dec 2006, 16:00

Xikeon schreef:

[...]
Ik heb ook nooit gezegt dat het veiliger is. Dat zit jij derbij te verzinnen.

Waarom post je hem dan ?!
En het is precíes hetzelfde als die van Saven, alleen zonder die $ingelogd=true;

Xikeon
Geplaatst op: 25 Dec 2006, 15:49

iisys schreef:

Wat een kutblog
Het is helemaal niet \'veiliger\' dan Saven\'s script, het is alleen lelijker, en 2 lines korter.

Ik heb ook nooit gezegt dat het veiliger is. Dat zit jij derbij te verzinnen.

iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 25 Dec 2006, 14:09

Wat een kutblog
Het is helemaal niet \'veiliger\' dan Saven\'s script, het is alleen lelijker, en 2 lines korter.

Xikeon
Geplaatst op: 25 Dec 2006, 12:34

Wouser schreef:

[...]

[url]http://nl2.php.net/mysql_real_escape_string[/url]


Daar had ik al gekeken Inmiddels al erin gezet he

Wouser
Cadeau'tjes :r
Geplaatst op: 25 Dec 2006, 12:08

Xikeon schreef:

Hmm ok, weet ik ook weer wat nieuws Ik snap alleen niet helemaal hoe je die mysql_real_escape_string gebruikt.

En ook, dan zeggen ze zo van dat \' OR \'\'=\' maar dat werkt bij deze code niet (iig niet bij mijn site )

[url]http://nl2.php.net/mysql_real_escape_string[/url]

Xikeon
Geplaatst op: 25 Dec 2006, 10:53

Ik heb het niet alleen in een functie gezet. Ik maak ook geen gebruik van $ingelogd = false; enzo. Ik heb dat mysql_escape_string ofzo toegevoegd nu

AndriesLouw
Geplaatst op: 25 Dec 2006, 10:24

Het in een function stoppen is niet meteen veilig!
Kijk ook eens naar mysql_real_escape_string.

Het is trouwens eerder een snippet dan een script

Xikeon
Geplaatst op: 25 Dec 2006, 09:42

Hmm ok, weet ik ook weer wat nieuws Ik snap alleen niet helemaal hoe je die mysql_real_escape_string gebruikt.

En ook, dan zeggen ze zo van dat \' OR \'\'=\' maar dat werkt bij deze code niet (iig niet bij mijn site )

[Laatst bewerkt door Xikeon op maandag 25 december 2006, om 09:45]
Syncie
Geplaatst op: 25 Dec 2006, 00:52

Xikeon schreef:

Mja, maar die was $ingelogd = true; ofzo en dat werd nogal \'afgekraakt\'. Deze manier doe ik altijd, dus dacht ik geef het ook meteen even :\')

[...]
En ik zie niet hoe jij een sql injection zou willen doen..


1
$userCheck = mysql_query( \"SELECT * FROM users WHERE id=\'\" . htmlspecialchars( $_COOKIE[ \'site_id\' ] ) . \"\' AND username=\'\" . htmlspecialchars( $_COOKIE[ \'site_username\' ] ) . \"\' AND password=\'\" . htmlspecialchars( $_COOKIE[ \'site_password\' ] ) . \"\'\" );

Hij gebruikt cookies zonder mysql_real_escape_string, niet echt handig. Die htmlspecialchars heeft hier helemaaal geen zin.

Xikeon
Geplaatst op: 25 Dec 2006, 00:37

Mja, maar die was $ingelogd = true; ofzo en dat werd nogal \'afgekraakt\'. Deze manier doe ik altijd, dus dacht ik geef het ook meteen even :\')

Syncie schreef:

OMG... Veilig mag je weglaten..
SQL Injections..

-Ik ga aan me eigen beginen -


En ik zie niet hoe jij een sql injection zou willen doen..

[Laatst bewerkt door Xikeon op maandag 25 december 2006, om 00:40]
Wouser
Cadeau'tjes :r
Geplaatst op: 25 Dec 2006, 00:34

Hmmm :\') lijkt nogal op die van Saven...

Rinaldo
Geplaatst op: 25 Dec 2006, 00:22

Sorry ik weet niet veel over deze dingen maar ziet er goed uit

Syncie
Geplaatst op: 25 Dec 2006, 00:17

OMG... Veilig mag je weglaten..
SQL Injections..

-Ik ga aan me eigen beginen -

[Laatst bewerkt door Syncie op maandag 25 december 2006, om 00:35]
📫

Nieuw privébericht

🔥

Registreren


Login