webForumDet fria alternativet

Ej tillåta Session Cookies

5 svar · 687 visningar · startad av matthew

matthewMedlem sedan okt. 2001166 inlägg
#1

Hejsan,
finns det möjlighet för användaren att stoppa session cookies?

Om det går, hur ska man komma runt detta om man vill ha koll på användaren när han är inloggad?

Hoppas många vet :)

sgtpepperMedlem sedan apr. 20007 588 inlägg
#2

Ja, om klienten inte tillåter servern att sätta cookies så kan inte sessions-id:et lagras, då får man istället skicka med sessions-id:et i URL:en vid varje respons. Det kan vara så att det sker automatiskt i senare versioner av PHP, eller så måste du själv konfigurera det i php.ini, jag vet inte exakt.

Gå till http://se2.php.net/manual/en/ref.session.php och leta upp rubriken "Passing the Session ID".

matthewMedlem sedan okt. 2001166 inlägg
#3

Tack sgtpepper...

Tools->Internet Options ->advanced -> Override automatic cookie handling i IE 6

På en PHP sajt som jag har, så väljer jag promt för first-party cookies och samma för third-party cookies... När jag går in på sajten så blir jag promtad och trycker block Cookie. Jag kommer fortfarande in och kan dessutom logga in och sätta de session för user id`et

Någon som haft samma problem som mig och kommit fram till en lösning?

Gärna ett exempel :)

matthewMedlem sedan okt. 2001166 inlägg
#4

Det som händer när jag loggar in och inte tillåter session cookies...

Då skapas automatiskt ett PHPSESSID i urlen och till i alla länkar samt i alla formulär som hidden.

Och jag blir inloggad...
Det dumma är att jag kan ta urlen och klistra in den i netscape så blir jag inloggad där också...

Inte speciellt bra...

Exempel:

session_start();

session_register('user');
session_register('psw');

$_SESSION['user'] = $user;
$_SESSION['psw'] = $psw;

if(($_SESSION['user'] == "användare") && ($_SESSION["psw"] == "lösenord"))
{
Visas om man är inloggad...
}

Några förslag?

sgtpepperMedlem sedan apr. 20007 588 inlägg
#5

matthew skrev:

Det som händer när jag loggar in och inte tillåter session cookies...

Då skapas automatiskt ett PHPSESSID i urlen och till i alla länkar samt i alla formulär som hidden.

Och jag blir inloggad...
Det dumma är att jag kan ta urlen och klistra in den i netscape så blir jag inloggad där också...

Inte speciellt bra...

Jo, det är jättebra, precis så skall det vara. Eftersom användaren inte stödjer cookies så persisteras sessions-id:et genom att appenderas till URL:en och vips så kan användaren äga en session trots att han inte tar emot cookies.

Att du kan klistra in URL+session-id i Netscape är varken fel eller konstigt.

Om du är orolig för eventuella sniffers etc som plockar sessions-id:et från URL:en så skall du veta att det är minst lika "osäkert" att lagra id:et i en cookie, cookie-datat transporteras på samma sätt som URL:en via HTTP. Vill du ha skydd får du prata krypterad HTTP via SSL.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Ett sätt att hindra "sessions-nappning" är att logga ip i samband med inloggning:

$_SESSION['user'] = $user; 
$_SESSION['psw'] = $psw; 
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

Och sedan när du kollar om inloggad, kolla samtidigt att ip är rätt:

if (isset($_SESSION['user']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) {
   echo "Du är inloggad";
}

Då hjälper det inte någon annan att få tag på sessionsid. De är ändå inte inloggade eftersom deras ip är fel.

Tänk bara på en sak då du för med dig sessionsid i länken; du måste ha session_start() på ALLA dina sidor. Går besökaren på en sida utan session_start() kommer länkningen av sessionsid att brytas.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)