Autor Zpráva
H13
Profil
Ahoj,

potřebuji poradit (možná něco vysvětlit)

Příklad: Když se uživatel přihlásí na určitý stránky(správný login, správné heslo), uložím nějakou hodnotu do nějaké session a ostatní stránky mu zpřístupním na základě této session.

Moc se v tom nevyznám, takže bych potřeboval vědět, jakou hodnotu mám vložit do session. Nevím, ale myslím, že když nazvu session "login" a hodnotu "yes", že to není moc bezpečné, stačí aby někdo udělal skript se session login a hodnotou yes a přeposlal to na mé stránky, splnil by podmínku a stránky by mu byly ukázány...ale jak říkám, moc tomu nerozumím, takže to jen tipuju ... zajímalo by mě jak se to řeší v praxi...

díky Honza
Hugo
Profil
Přečti si toto

http://www.linuxsoft.cz/article.php?id_article=440
DJ Miky
Profil
H13
Session se ukládají na serveru, ne u klienta, tzn. že pokud klient není nějaký hacker, tak se do obsahu session nedostane a už vůbec se nedostane k jejich měnění...
H13
Profil
Není vůbec neobvyklé ukládat si sessions do databáze MySQL; někteří vývojáři tvrdí, že to může zvýšit výkon skriptu nebo zabezpečení sessions. Můžete také napsat funkci, která data session šifruje.

Tak to je vše, co jsem se z toho článku dozvěděl, nakousnutí...Šifrovat - ano? proč? jak? k čemu?
H13
Profil
Session se ukládají na serveru, ne u klienta, tzn. že pokud klient není nějaký hacker, tak se do obsahu session nedostane a už vůbec se nedostane k jejich měnění...

Nejde mi o jejich změnění...ale většina příkladů, co jsem kdy viděl funguje na principu:

if ($_SESSION[prihlasen] ==1) ...ukaž stránku, no a stačí napsat skript $_SESSION[prihlasen]=1 a poslat to na tu stránku a ukáže se obsah...samozřejmě je to málo pravděpodobné, ale zkusit zvolit prihlasen nebo login a hodnotu 1 nebo yes je podle mě nebezpečné
DJ Miky
Profil
H13
$_SESSION[prihlasen]=1 byste musel volat ze stejného webu/serveru (prostě subdomény), odjinud to nejde...
gaminn
Profil *
no a stačí napsat skript $_SESSION[prihlasen]=1 a poslat to na tu stránku

To by mě zajímalo, jak se tohle realizuje :D
H13
Profil
To by mě zajímalo, jak se tohle realizuje :D

No to mě právě zajímá, jestli to tak jednoduše jde obejít, nebo jestli si to představuju moc růžově... Uvažoval jsem, že když vytvořím Session např. login - s hodnotou 1 a na dalších stránkách kontroluji, jestli existuje Session login s hodnotou 1 a když ano, pak zobrazím obsah...jestli, když potencionální útočník vytvoří session login s hodnotou 1 ve svém skriptu a otevře mé stránky, jestli se mu zobrazí....
koudi
Profil
H13
Ne. Každá session má svoje ID a podle toho, jaký je ID se přiřadí správná data ke správnému uživateli (to protože na webu může být víc lidí najednou). Tohle ID se buď dá předávat pomocí URL (radši to nedělej), fomulářových polí (taky ne) a nebo pomocí cookie, kde je uloženo to id (čili údaje o přihlášení jsou fyzicky na serveru, ne u tebe, čili si tam můžeš vytvořit cokoliv a je to poměrně jedno). Čili když se přihlásíš, na tvém pc je soubor, který určuje jaké ID má ta session. Útočník by musel zjistit tohle id, vytvořit u sebe cookie do který by zadal tuhle hodnotu - jde to. Tzv. session stealing (nebo tak nějak). No a právé z tohoto důvodu se pak ještě provádí kontrola IP apod :).

Takže ne, tak jak si to představuješ to nejde.
srigi
Profil
Vytvorit plozku v poli $_SESSION je na dialku nemozne. Jedina moznot ako hacknut aplikaciu zalozenu na sessions, je ukradnut session ID od nejakeho prihlaseneo usera, alebo donutit tohoto usera (a server) aby uzivatel dostal ID, ktore urci utocnik.
Ak kces zvysit bezpecnost session based aplikacii, nastuduj si funkciu session_regenerate_id(). Ak ju dobre zvladnes, mozes svoj login zalozit aj na velmi jednoduchom overeni v $_SESSION.
H13
Profil
skvělý, díky všem, o session jsem přečetl pár článků a příkladů a nikde jsem se nedozvěděl, že se session nedá předat na dálku, atd...

díky moc
gaminn
Profil *
No nedozvěděl... Ono se stačí zamyslet a dojde ti, že jinak, než z tvých skriptů session právě a jenom toho klienta, který si stránky vyžádal, nezměníš.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0