Toon posts:

[PHP+Sessie] Kunnen zien welke sessies je open hebt staan.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nou mijn website even aan het rescripten, ik vind deze versie van CCMod een beetje gammel.

Situatie:

User logd in, sessie wordt geopent met een array, deze bevat userid+username+md5pass. Dan sla ik in een cookie op userid+username+md5pass, zodat als je de browser sluit dat je dan je sessie weer kan openen zonder in te loggen.

Vraag:

Hoe kan ik nou zorgen dat als je vanaf PC1 ingelogd bent dat je dan vanaf PC2 kan uitloggen op PC1(Zie GoT met sessies)?

Ik denk dat ze een sessieid opslaan in mysql, maar dan? hoe openen ze die dan weer en hoe vedder?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 08 december 2002 @ 20:17:
User logd in, sessie wordt geopent met een array, deze bevat userid+username+md5pass. Dan sla ik in een cookie op userid+username+md5pass, zodat als je de browser sluit dat je dan je sessie weer kan openen zonder in te loggen.
zeer onverstandig... Zet dan gewoon de sessie-expiry-time hoger...
Hoe kan ik nou zorgen dat als je vanaf PC1 ingelogd bent dat je dan vanaf PC2 kan uitloggen op PC1(Zie GoT met sessies)?

Ik denk dat ze een sessieid opslaan in mysql, maar dan? hoe openen ze die dan weer en hoe vedder?

GoT werkt niet met php-sessies en slaat idd de boel in mysql op, anders moet je gewoon de /tmp/sess_$sessieid file verwijderen...

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Wat ik voor mijn forum heb gedaan is als volgt:
Ik heb een sessies tabel met sessionid's en daaraan gekoppeld een userid.
Het enige wat ik opsla in een cookie is de sessieid. Iedere PC waarop iemand inlogd heeft uiteraard zijn unieke sessieid.

Aangezien sessionid's uniek zouden moeten zijn zou je SessionID als Primary key moeten defineren.
Het is dan ook niet moeilijk om de user op alle PC's uit te loggen. Het enige wat je hoeft te doen is alle rijen te verwijderen uit de sessies tabel die de waarde van de ingelogde userid hebben.

It’s nice to be important but it’s more important to be nice


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

ACM schreef op 08 December 2002 @ 20:31:
zeer onverstandig... Zet dan gewoon de sessie-expiry-time hoger...
En we zullen maar even ter verduidelijking uitleggen waarom:
Die combinatie van userid+username (is sowieso publiekelijk bekend waarschijnlijk) en md5pass is nu net zo waardevol al alleen de username en het password. Ofwel, als iemand nu de cookie van iemand onderschep (wat niet zo ondenkbaar is, zie IE-bugs in het verleden) kan hij ten alle tijde gewoon inloggen door die cookie te nemen.

Kies je daarentegen voor een uniek ID (zoals een sessie-id) wat voor een beperkte tijd geldig is heeft de cracker een probleem zodra die sessie-id is verlopen.

|_____vakje______|


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Sowieso is een md5-pass vrij eenvoudig te kraken en in een betrekkelijk korte tijd.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

ACM schreef op 08 December 2002 @ 20:57:
Sowieso is een md5-pass vrij eenvoudig te kraken en in een betrekkelijk korte tijd.
Dat omdat gebruikers altijd slechte passworden kiezen met alleen meer kleine en weinig lettertjes.

|_____vakje______|


Verwijderd

Topicstarter
ACM schreef op 08 December 2002 @ 20:31:
zeer onverstandig... Zet dan gewoon de sessie-expiry-time hoger...
ja vertel mij wat :(

ik had eerst alleen userid, dus dan was het userid veranderen en opeens ben je iemand anders, toen ik dit opeens bedacht had ik meteen me site down gehaald :+
maarja ik ben ook maar beginnend phper(nouja, toen ik die site maakte, daarom nou total rescript).
JonkieXL schreef op 08 december 2002 @ 20:34:
Wat ik voor mijn forum heb gedaan is als volgt:
Ik heb een sessies tabel met sessionid's en daaraan gekoppeld een userid.
Het enige wat ik opsla in een cookie is de sessieid. Iedere PC waarop iemand inlogd heeft uiteraard zijn unieke sessieid.

Aangezien sessionid's uniek zouden moeten zijn zou je SessionID als Primary key moeten defineren.
Het is dan ook niet moeilijk om de user op alle PC's uit te loggen. Het enige wat je hoeft te doen is alle rijen te verwijderen uit de sessies tabel die de waarde van de ingelogde userid hebben.
dus iets als dit:
PHP:
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
if (isset($dbpassword) || isset($dbusername) { echo "hacking attampt"; exit; }

if (IsSet($HTTP_COOKIE_VARS["CCMod-SESID"])) {
  $sesidinkoek = $HTTP_COOKIE_VARS["CCMod-SESID"];
  $mysqlzooi = mysql_query("SELECT * FROM opensessies WHERE session_id='$sesidinkoek' LIMIT 0,1";);
  if (mysql_num_rows($mysqlzooi)==1) {
    $blaaaaat = mysql_fetch_array($mysqlzooi);
    session_id($blaaaaat);
    $loggedinnetje = 1;
    setcookie ("CCMod-SESID", "$sesidinkoek", 20000); //koekie verlengen
}

}
include "blaatincludefile.php";
session_start();
LayoutOpen();
if ($username==$dbusername && md5($password)==$dbpassword && $loggedinnetje!=1) {
  session_register();
  mysql_query("DELETE * FROM opensessies WHERE userid='$userid';"); //oude sessies stoppen
  mysql_query("INSERT INTO opensessies ('session_id','userid') VALUES ('$session_id', '$useridtjuh');"; //nieuwe sessie openen
  setcookie ("CCMod-SESID", "$session_id", 20000);
} else {
  echo "je ken niet inloggen.";
}
LayoutClose();

zoiets dan?

[ Voor 16% gewijzigd door Verwijderd op 08-12-2002 21:14 . Reden: even koekie opslaan ingeboud ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

ACM schreef op 08 december 2002 @ 20:57:
Sowieso is een md5-pass vrij eenvoudig te kraken en in een betrekkelijk korte tijd.


Mwa.. ik gebruik ook zoiets als ik een cookie-inlog systeem wil hanteren... Schrijf in de cookie een MD5(userID.usernaam.passmd5) weg ofzo en controleer dat weer zodra de gebruiker opnieuw de site bezoekt.. en paas het dan weer door naar de sessie om die vervolgens te blijven gebruiken..

Kleine kans dat iemand dat weet te achterhalen/faken. (Dit is fictieve uitvoer uiteraard, anders hoe je nog alleen de userID/username te weten om alleen de password te hoeven kraken... Dus plak er ook wat andere tekens door, die je dus alleen met sourcecode kunt weten. :))

[ Voor 26% gewijzigd door Bosmonster op 08-12-2002 21:45 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

[nohtml]
Verwijderd schreef op 08 December 2002 @ 20:59:
ik had eerst alleen userid, dus dan was het userid veranderen en opeens ben je iemand anders, toen ik dit opeens bedacht had ik meteen me site down gehaald :+
maarja ik ben ook maar beginnend phper(nouja, toen ik die site maakte, daarom nou total rescript).
Je moet het userid juist in de sessie opslaan ;)
Daar kan niemand hem wijzigen en de sessie zelf is al identificeerbaar via de sessieid.
Bosmonster schreef op 08 december 2002 @ 21:43:
Mwa.. ik gebruik ook zoiets als ik een cookie-inlog systeem wil hanteren... Schrijf in de cookie een MD5(userID.usernaam.passmd5) weg ofzo en controleer dat weer zodra de gebruiker opnieuw de site bezoekt.. en paas het dan weer door naar de sessie om die vervolgens te blijven gebruiken..

Kleine kans dat iemand dat weet te achterhalen/faken. (Dit is fictieve uitvoer uiteraard, anders hoe je nog alleen de userID/username te weten om alleen de password te hoeven kraken... Dus plak er ook wat andere tekens door, die je dus alleen met sourcecode kunt weten. :))
Tuurlijk, maar het is niet nodig.

Je kan gewoon de timeout tijd (die van de cookie dus) voor je sessies verhogen zodat je niet je sessie kwijt raakt...
Geen gedoe met allerlei constructies om je sessie weer te starten, gewoon de sessie door laten lopen.

[ Voor 48% gewijzigd door ACM op 08-12-2002 21:47 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Hmm.. heeft dat geen gevolgen voor het geheugengebruik ofzo? Sessie op bijvoorbeeld 30 dagen zetten ofzo?

database sessionhandler lijkt me DB-I/O verspilling eerlijk gezegd...

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Bosmonster schreef op 08 december 2002 @ 21:50:
Hmm.. heeft dat geen gevolgen voor het geheugengebruik ofzo? Sessie op bijvoorbeeld 30 dagen zetten ofzo?
Voornamelijk diskruimte, maar die paar byte die er in een sessie zitten is niet echt iets om wakker van te liggen. Als dat wel het geval is kun je altijd nog een ander systeem bedenken met een reactivatie-key oid die de sessie weer opnieuw aanmaakt (maar dan maak je het moeilijk dan het al is).
database sessionhandler lijkt me DB-I/O verspilling eerlijk gezegd...
Je kunt er wel queries op los laten en daarmee de originele vraag beantwoorden. In ieder geval efficienter als dat dat met een file-system-based-sessie kan.

|_____vakje______|


Verwijderd

Topicstarter
ACM schreef op 08 december 2002 @ 21:45:
Je moet het userid juist in de sessie opslaan ;)
Daar kan niemand hem wijzigen en de sessie zelf is al identificeerbaar via de sessieid.
Ja dat weet ik, maar toen der tijd had ik alleen de userid, en meer niet :+
Je kan gewoon de timeout tijd (die van de cookie dus) voor je sessies verhogen zodat je niet je sessie kwijt raakt...
Geen gedoe met allerlei constructies om je sessie weer te starten, gewoon de sessie door laten lopen.
PHP:
1
2
$sesid = session_id();
setcookie("sessionid",$sesid, 20000);

?

maar ik wil wel overal kunnne uitloggen, dus dan is het gewoon opslaan welke user welke sesid's heeft en die deleten.

[ Voor 18% gewijzigd door Verwijderd op 08-12-2002 21:59 . Reden: moeilijk hoor de [php] tag neerzetten. ]


Verwijderd

Topicstarter
ik wordt gek, verklaar het volgende eens:

index.php
PHP:
1
2
3
4
5
6
7
8
global $IsLogged;
$IsLogged = 0;

include "file1.php";
include "file2.php";

LayoutOpen();
LayoutClose();


file1.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
session_set_cookie_params ( time()+9999999 , "" , ".digiskin.net"); 

if ( $HTTP_COOKIE_VARS[session_id_set] ) { 
    session_id( $HTTP_COOKIE_VARS[session_id_set] );
}
session_start();
if (session_is_registered("CCMod-IsLogged")) {
    $IsLogged=1;
} else {
    $IsLogged=0;
}
echo $IsLogged; //Zie later buiten post *


file2.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function SiteBB($text) {
    if ($IsLogged==1) {
        $log_action = "logout";
        $logintextje = mysql_fetch_array(mysql_query("SELECT inhoud FROM aaa WHERE repl='**login_logout_text**';")); $loginlogout = stripslashes($logintextje['inhoud']);
    } else {
        $log_action = "login";
        $logintextje = mysql_fetch_array(mysql_query("SELECT inhoud FROM aaa WHERE repl='**login_login_text**';")); $loginlogout = stripslashes($logintextje['inhoud']); 
    }   
    $title = "blaat";
    $text=str_replace("**actionloginlogout**","$log_action",$text);
    $text=str_replace("**loginlogout**","$loginlogout",$text);
    $text=str_replace("**mainurl**","$hoofdurl",$text);
    $text=str_replace("**ccmodtitle**","$title",$text); 
    return $text;
}

function SiteOpen() {
    $gegevens=mysql_fetch_array(mysql_query("SELECT inhoud FROM bbb WHERE id=1;")); 
    echo SiteBB($gegevens['inhoud']);   
}
function SiteClose() {
    $gegevens=mysql_fetch_array(mysql_query("SELECT inhoud FROM bbb WHERE id=2;")); 
    echo SiteBB($gegevens['inhoud']);   
}


waarom zie ik wel de $IsLogged * als ik die echo vanuit file1 en verandet hij niet vanuit SiteBB, daar blijf ik uitgeloggd(nouja hij laat menu niet goed zien.

alle variables hebben andere namen als ik het echt, dit om te vorkomen dat ccmod.com niet gehackt wordt.

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 12-07 11:54
IsLogged moet je natuurlijk ook als global definieren binnen functies.

Verwijderd

Topicstarter
nou loop ik tegen nog een vaag probleem aan:

Je logt in(zonder LockSession), sluit het venster, opent de pagina opnieuw, dan blijft hij ALTIJD de .net/?PHPSESSID=SESSIEIDCODETJE weergeven, net of hij hem nergens opgeslagen houd. ik zie dan ook geen session koekie verschijnen bij mijn koekies. :?
Pagina: 1