Autor | Zpráva | ||
---|---|---|---|
Enko Profil * |
#1 · Zasláno: 8. 10. 2012, 18:22:30
Ahoj,
mám stránku která používá k držení dat SESSION se kterými následně pracuji. Vše funguje bezvadně do té doby než má uživatel vypnuté cookies. Pak se samozřejmě nemá podle čeho ověřovat SESSION. Jak se dá toto vyřešit? Jde nějak bezpečně předávat například SESSION identifikátor v $_GET? Nebo jak se dá toto jinak řešit? Potřebuju jen skrytě přenášet data mezi stránkami. |
||
Majkl578 Profil |
#2 · Zasláno: 8. 10. 2012, 18:26:11
Bezpečně ne. Při přenášení skrz URL jde o session fixation.
|
||
Enko Profil * |
#3 · Zasláno: 8. 10. 2012, 18:48:51
Session fixation chápu. Ale když to nepoužívám k přihlášení uživatelů, ale jen k přenosu dat, která nejsou nijak tajná, tak to zas až tak ničemu nevadí, ne? :) Nechci totiž ty hodnoty přenášet jednotlivě v GET parametrech.
|
||
Enko Profil * |
#4 · Zasláno: 10. 10. 2012, 18:50:11
Tak mám ještě jeden dotaz. Mám následující příklad.
Mám stránku kde si chci do $_SESSION[] ukládat nějaké informace. Uživatel však může mít vypnuté cookies, což mi způsobí, že Session identifikátor uložený v cookie neexistuje. Jak tedy postupovat dál? Hodnotu Session identifikátoru si získám ze session_id(), ale už nevím jak jí vrátit serveru aby mi na základě tohoto identifikátoru vrátil hodnoty uložených $_SESSION[]. Jak se v těchto případech postupuje? Děkuji za každou radu :) |
||
Davex Profil |
#5 · Zasláno: 10. 10. 2012, 19:48:28
Enko:
Pro přenos identifikátoru se musí použít něco jiného než cookie, třeba parametr v adrese, ale bacha na to, aby se parametr neposílal robotům (pro ně nemá session smysl vytvářet a kazilo by to odkazy). |
||
Enko Profil * |
#6 · Zasláno: 10. 10. 2012, 19:59:45
Davex:
JJ todle vím :-) Nechápu ale ten princip. Do adresy ho dokážu dostat pomocí session_id(), ale nevím jak funguje ten princip, že server pozná že se jedná o Session ID. Nemáte prosím někde nějaký příklad? |
||
Tori Profil |
Enko:
„Do adresy ho dokážu dostat pomocí session_id()“ Použijte spíš konstantu SID, ta |
||
Enko Profil * |
#8 · Zasláno: 10. 10. 2012, 22:52:35
Tori:
Luxus, děkuju. toto jsem přesně hledal. |
||
Časová prodleva: 9 dní
|
|||
Enko Profil * |
#9 · Zasláno: 19. 10. 2012, 15:46:12
Tak se obracím opět s dotazem :-) Mám toto:
v .htaccess mám: php_value session.use_trans_sid 1 a v php následující: <?php session_start(); //ověření zda již bylo přesměrováno k ověření SID z cookies if($_GET["r"] != "1" ){ header("Location:sid.php?r=1"); exit; } //vytvoření session if(!isset($_SESSION["i"])){$_SESSION["i"] = "12345";} //ověření SID if (!SID) { echo "<h1>Prohlizec ma povoleny cookies</h1>"; echo "Session[i] je: " . $_SESSION["i"]; } else{ header("Location:sidtest.php?" . SID); exit; } ?> a v souboru sidtest.php mám: <?php echo "<h1>Prohlizec nema povoleny cookies</h1>"; echo "SID je: " . SID; echo "<br>Session[i] je: " . $_SESSION["i"] . "<br>"; var_dump($_SESSION); ?> A výsledek je, že pokud má uživatel zaplé cookies, tak se provede tato podmínka if (!SID) {... a v pořádku se vypíše obsah $_SESSION["i"] Pokud je má vypnuté, tak se na stránku vypíše následující: Prohlizec nema povoleny cookies SID je: SID Session je: NULL Což mi není jasné, proč se nepřenáší $_SESSION kdz6 v parametru adresy je vypsána konstatnta SID. Můžete m rpsím někdo poradit proč to tak je? Děkuju |
||
Tori Profil |
Enko
„SID je: SID “ - tohle znamená, že konstanta SID není definovaná, takže se místo ní použije řetězec "SID" (zapněte si zobrazování chyb). Ve všech skriptech, které chtějí mít přístup k session, musí být na začátku session_start(); . Asi PHP předpokládá, že když nestartujete session, tak s ní ani nechcete pracovat, takže ani nemusí nastavovat konstantu.
|
||
Enko Profil * |
#11 · Zasláno: 19. 10. 2012, 17:43:34
Tori:
JJ, právě jsem na to přišel a šel jsem sem napsat, že to bylo tím, že mi chybělo session_start(); Díky :-D |
||
Časová prodleva: 12 let
|
0