Zadejte hledaný výraz...

SESSION bezpečnosť

ne
verified
rating uzivatele
(22 hodnocení)
30. 10. 2011 12:10:27
ak zabranis XSS, sedenie moze uniknut uz len skrz sniffing... ten sa vykonava vacsinou na rovnakej sieti, cize po ziskani sessidu kludne prevezmem moc nad uctom, pretoze tvoja "ochrana" riesi iba cast problemu...
teoreticky ma napada napr. neregenerovat sessid, ale pridavat nahodny kluc, ktory sa zmeni po kazdej poziadavke klienta... ked ako utocnik preberem kontrolu nad uctom, vykonam poziadavku a tento kluc zmenim.. obet pri pokuse vykonat poziadavku posle uz neplatny kluc, cim ochrana zisti potencionalne narusenie bezpecnosti a sedenie zrusi (idealne s upozornenim)...
najlepsia ochrana je vsak komunikaciu sifrovat..
30. 10. 2011 12:10:27
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692572
tm
verified
rating uzivatele
(5 hodnocení)
30. 10. 2011 14:27:26
Napsal ne;718058
teoreticky ma napada napr. neregenerovat sessid, ale pridavat nahodny kluc, ktory sa zmeni po kazdej poziadavke klienta... ked ako utocnik preberem kontrolu nad uctom, vykonam poziadavku a tento kluc zmenim.. obet pri pokuse vykonat poziadavku posle uz neplatny kluc, cim ochrana zisti potencionalne narusenie bezpecnosti a sedenie zrusi (idealne s upozornenim)...
Toto řešení zase znemožní pracovat s webovou aplikací ve dvou oknech/záložkách zároveň.
---------- Příspěvek doplněn 30.10.2011 v 14:37 ----------
Napsal Bokos;718051
Aha no tak ďakujem :-). Možno ešte keby ste mi skomentovali ten môj "user-check-agent" :-).
Nikde nevidím, že by sis do $_SESSION ukládal $_SERVER, to samé u IP adresy.
Jinak kód:
isset($_SESSION) AND !empty($_SESSION)
funguje uplně stejně jako:
!empty($_SESSION)
protože do "funkce" empty můžeš oficiálně narvat i neexistující proměnnou a ona pěkně vrátí false, bez chybové hlášky ;) Ušetříš a zpřehledníš kousek kódu.
30. 10. 2011 14:27:26
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692571
ne
verified
rating uzivatele
(22 hodnocení)
30. 10. 2011 15:43:11
moje riesenie umoznuje pracu s viacerymi zalozkami / oknami... nechapem, preco tvrdis opak...
a to empty() mu fakt dobre radis len co je pravda....
$_SESSION = (!isset($_SESSION))? false : $_SESSION;
if ($_SESSION!==false)
neni to logickejsie??
30. 10. 2011 15:43:11
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692570
tm
verified
rating uzivatele
(5 hodnocení)
30. 10. 2011 16:38:58
Napsal ne;718111
moje riesenie umoznuje pracu s viacerymi zalozkami / oknami... nechapem, preco tvrdis opak...
Omlouvám se, nebylo to úplně přesně řečeno.
S použitím tvého řešení může nastat následující situace (uživatel má otevřená dvě okna webové aplikace):
1) V prvním okně klikne na odkaz, odešle se požadavek na server s náhodně vygenerovaným klíčem.
2) Server požadavek přijme, překontroluje hodnotu klíče, zjistí, že je v pořádku a vygeneruje nový klíč. Následně pokračuje dál ve zpracování požadavku.
3) Uživatel, protože čeká, než se mu dostane odpověď od serveru, přepne do druhého okna, klikne na odkaz a tím odešle požadavek na server. A zde už je problém. Server před chvílí vygeneroval nový klič, který ještě nestihl předat prohlížeči. Ten proto zaslal starý klíč. Server tedy uživatele z bezpečnostních důvodů odhlásí.
Toto řešení prostě nefunguje spolehlivě.
Jsem přesvědčen, že empty() funguje přesně tak, jak jsem psal. Nebo proč myslíš, že je tomu jinak?
30. 10. 2011 16:38:58
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692569
ne
verified
rating uzivatele
(22 hodnocení)
30. 10. 2011 17:43:47
uzivatel ani nestihne prepnut zalozku a odpoved dorazi (odpoved prichadza v chunkoch a hned v prvom bude obsah cookies), pokial nema velmi pomali net (odozvu). Ak ano, pochybujem, ze by este zbesilo otvaral dalsie stranky...
moj navrh je spolahlivy - problem nastava len na strane http protokolu (poziadavka - odpoved) - preto upozornenie uzivatela pri odhlaseni
keby sme akceptovali tebou popisanu situaciu ako standardnu tak by nebolo mozne ani len regenerovat sessid...
ano, empty() funguje tak ako si pisal, ale pouziva sa na nieco ine... true ti vrati aj pri 0 (int aj string), false, null, prazdne pole... logickejsie a spravnejsie je podla mna kontrolovat jednu konkretnu hodnotu
30. 10. 2011 17:43:47
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692568
Bokos
verified
rating uzivatele
30. 10. 2011 17:52:21
Ďakujem ale tú IP/USER-AGENTA zapisujem pri logine a registrácii.
To empty si opravím :-).
Tak ako to mám spraviť aby to bolo fajn :-) môžte mi dať prosím príklad :-))). Ďakujem doposiaľ ste mi veľmi pomohli a za to máte aspoň point :-).
30. 10. 2011 17:52:21
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692567
tm
verified
rating uzivatele
(5 hodnocení)
30. 10. 2011 23:16:53
Napsal ne;718139
uzivatel ani nestihne prepnut zalozku a odpoved dorazi (odpoved prichadza v chunkoch a hned v prvom bude obsah cookies), pokial nema velmi pomali net (odozvu). Ak ano, pochybujem, ze by este zbesilo otvaral dalsie stranky...
moj navrh je spolahlivy - problem nastava len na strane http protokolu (poziadavka - odpoved) - preto upozornenie uzivatela pri odhlaseni
keby sme akceptovali tebou popisanu situaciu ako standardnu tak by nebolo mozne ani len regenerovat sessid...
Odpověď server odesílá v momentě, kdy na výstup vypíšeš nějaká data o nějaké minimální velikosti. Do té doby mlčí. Navíc odeslání dat se běžně blokuje funkcí ob_start(), právě kvůli tomu, aby se dala modifikovat HTTP hlavička.
Spolehlivost tvého řešení nestojí ani tak na kvalitně připojení uživatele, jako spíš na vytíženosti serveru a náročnosti volaného požadavku. Zkus něco takového aplikovat na nějaký sdílený freehosting. Možná budeš překvapen, jak rychle se to celé sesype.
Regenerace session ID je většinou jednorázová akce v momentě přihlášení uživatele. Tvoje řešení generuje nový klíč automaticky při každém požadavku.
---------- Příspěvek doplněn 30.10.2011 v 23:34 ----------
Skript může vypadat například takto:
session_start();
$_SESSION = isset($_SESSION) ? $_SESSION : false;
$_SESSION = isset($_SESSION) ? $_SESSION : null;
$_SESSION = isset($_SESSION) ? $_SESSION : null;
// data z formulare, prihlaseni uzivatele
if(isset($_POST) && isset($_POST))
{
// kontrola, ze jsou prihlasovaci udaje spravne
$sql_result = mysql_query(...);
// uzivatel existuje, prihlasime
if(mysql_num_rows($sql_result) == 1)
{
$_SESSION = true;
$_SESSION = $_SERVER;
$_SESSION = $_SERVER;
}
}
// odhlaseni uzivatele v pripade jine IP adresy nebo prohlizece
else if($_SESSION &&
($_SESSION != $_SERVER || $_SESSION != $_SERVER))
{
$_SESSION = false;
}
30. 10. 2011 23:16:53
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692566
Bokos
verified
rating uzivatele
31. 10. 2011 10:03:15
Ale veď presne to mám nie? :-)
31. 10. 2011 10:03:15
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692565
ne
verified
rating uzivatele
(22 hodnocení)
31. 10. 2011 14:40:34
tm: bohuzial, skusenost z freehostingom nemam, je mozne ze tam bude odozva trvat dlhsie, nez je bezne a tvoj scenar sa stane realnym... avsak na kvalitnych hostingoch som s mojim riesenim (ale inak prevedenym) nemal problem.
regeneracia sessid pri prihlaseni je znova len ciastocne riesenie (konkretne len proti Session Fixation).
31. 10. 2011 14:40:34
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692564
tm
verified
rating uzivatele
(5 hodnocení)
1. 11. 2011 09:55:45
Napsal Bokos;718343
Ale veď presne to mám nie? :-)
Máš :)
Jinak jak psal ne, pokud kontroluješ pouze existenci proměnné a nepotřebuješ kontrolovat její hodnotu, je lepší se naučit používat isset(). Totiž empty() je víc rozežraná a vrací true i na některé neprázdné hodnoty (číslo nula apod.)
---------- Příspěvek doplněn 01.11.2011 v 10:04 ----------
ne: Máš pravdu, že tvoje řešení v naprosté většině případů funguje bez problému. Stejný problém, jako je se záložkami, tak je i s tlačítkem Zpět, u kterého je snad pravděpodobnost i vyšší, že se to pokazí (uživatel si uvědomí, že nechtěl kliknout na odkaz a vrací se tlačítkem Zpět). Jenom nemám rád řešení, které jsou náchylné k WTF chybám, kdy se něco občas chová divně.
1. 11. 2011 09:55:45
https://webtrh.cz/diskuse/session-bezpecnost/strana/2#reply692563
Pro odpověď se přihlašte.
Přihlásit