Chtěl bych na svoje stránky dát, aby se u mě mohl kdokoli zaregistrovat a tím by měl přístup i na nějaké další stránky (na mojem webu), ale nevím jak udělat aby se při každém otevření stránky předalo uživatelské heslo a jméno. Chtěl bych to mít podobně jako je to na stránkách Duny on-line (www.dune.cz/online). Už mě napadlo udělal to přes cookie, což by šlo, ale nedalo by se říct, že by to bylo zrovna bezpečné.
Za případné odpovědi předem vám všem dík :-)
a je to tady zase :-) diskuze cookies ano ci ne??? zkousel jsi se divat ve starsich prispevcich? mas chut to tady rozpoutavat znova??? :-)))
muzes pouzit basic auth, nebo si udelat vlastni logovaci system (registrat session a predavat log pomoci promennych). osobne si myslim, ze basic auth je vice napadnutelnejsi nez predavani session_id pomoci cookies.
m.s.
Muzu te uklidnit, cookies jsou asi stejne bezpecne, jako jakakoliv jina autorizace na internetu. Pokud by si chtel jeste bezpecnejsi pristup, pak se nevyhnes sifrovane komunikaci. A kdyby jsi chtel jeste bezpecnejsi pristup, tak pak je nejlepsi kazdou akci uzivatele nechavat potvrzovat kody, ktere posilas jinym nezavislym kanalem (treba jak to ma eBanka), nebo jsou pocitany specialni aplikaci (elektronickym klicem).
Tak ted jsem te postrasil :o) - nejednodusi jsou cookies + kontrola IP adresy, protoze predpokladas, ze se behem prace IP adresa bezne nemeni. Nechce-li pouzivat cookies, musis si informace posilat v odkazech a ve skrytych polich formulare.
Nejednodussi je pridelit uzivateli Session ID a v databazi/na disku mu vyhradit nejaky docasny pracovni prostor. PHP na to ma funkce, ja casteji pouzivam databazy, samotna autorizace spojeni se da samozrejme udelat bez nutnosti pristupovat k databazi, ale je to trosku slozitejsi a ne hned pochopitelny.
Já to mám přes Session, IP, prohlížeč náhodnej řetězec... A snad jěště něco:o). Skrátka a dobře neprolomitelné...:-).
I kdyby ti někdo odkouk session tak je mu to naprd... Páč získá akorát náhodný číslo a uživ jméno až z tohodle se skládá výslednej řetězec (+ jěště z z IP, hostname, prohlížeče atd...:o) CElí md5()) mno opchybuji že by se to jentak dalo prolomit... koneckonců kdo by se o to snažil:o).
Martine, včem má výhodu basic auth? A jak se dá prosímtě prolomit?
ja bych se na to cely vprdl velebnosti
Lukasiku ... nevim naco tak slozite, podle me sou kua cookies kerejm se predava heslo v md5ce a uid uzivatele kerej se vygeneruje pri spravnym loginu overenym z db. je pak supr ze to nejde zneuzit ... dyz se prihlasis z jinyho poce tam natom se ti pravo pristupu zrusi ... coz je podle me inteligentni ... jeden clovek=jeden pocitac ...
mmc. bych to rad videl, zatim sem se k zadnymu tvymu webu nedostal ...
hm, ani nevím proč jsem začal tak složitě, jinak pokud myslíš tohle, index.php?uname=Lukasik&heslo=md5(pass)
tak to se mi nelíbí, musíš to neustále předávat a navíc není problematické se potom za toho člověka přihlásit, pokud např. je ten počítač někde v knohovně a maj tam hromady lidí pŕístup!
Jinak tak složitě jsem vycházel z toho hlavně že na prvním webu, jsem udělal login tím způsobem že se do souboru kterej se jmenoval jako jeho IP adresa se uložil čas a pár blbostí asi si domyslíš proč to je to blbost...
Mno, pak jsem to udělal takhlens, nejen kvůli bezpečnosti, ale taky kvůli 100% bezpečonosti (ačkoliv netvrdím že by se to nedalo prolomit...:o)).
A navíc pokud máš v compu trojana či se jen nˇkomu podaří odposlechnout tvůj požadavek, tak jseš stejně v háji...:o).
>Martine, včem má výhodu basic auth? A jak se dá prosímtě prolomit?
...ja o nejake vyhode mluvil???
ale mozna vyhodne se muze zdat to, ze je to standartne implementovane v protokolu a v serveru a prakticky s tim nemas zadnou starost. jako hlavni nevyhoda se zda byt, ze mohou byt problemy s odhlasovanim, mas nulovou moznost nejak zmenit prihlasovaci formular a subjektivne se mi to zda vice napadnutelne, nez treba logovani pomoci cookies (to ale neni bezpecnostni chyba, ale vlastnost protokolu).
pokud bych se mel rozhodovat, pak basic_auth bezne pouzivam v pripadech, kdy je prihlaseni prakticky jednouzivatelske - typicky napr. delam, ze zakaznici maji moznost si texty na webu menit podle svych pozadavku - zde imho staci basic_auth, protoze procento prolomeni je velice male a pripadne zpusobene skody minimalni a snadno nahraditelne.
v pripade, ze by se jednalo o viceuzivatelskou sluzbu (typicky treba emailove sluzby, redakcni system, diskuzni forum...) bych asi volil radeji neco podobneho, jak jsi nastinil ty (to znamena nejakeID+IP+nahodny_retezec, cele bych to md5 a predaval v cookies nebo parametrem. nahodny retezec po kazdem pozadavku se meni, takze procento moznosti prolomeni a zneuziti klesa).
rozhodne bych nepredaval ani logovaci jmeno, ani heslo jindy nez pri logovani - a vim proc! :-)
(at uz je ale o tomto a jinych zpusobech jsou popsany spousty materialu nejen po celem internetu...
m.s.
V jednom projektu predavam v cookies jmeno a ID spocitane jako MD5(Jmeno+nahodny_retezec+IP+XForwardedFrom+Datum). Docela to staci., ma to jen nevyhodu, ze tahle autorizace vydrzi jen jeden den :o) - pro praci pres pulnoc server uvazuje i autorizaci z minuleho dne :o)
predavani jmena me osobne se nelibi, protoze se da lokalne zjistit, ktery uzivatel na pocitaci byl prihlasen. ale je to zase asi veci nazoru... takoveto debaty vetsinou sklouznou do nekonecnych smycek pro a proti :-)
m.s.
ID - Identifikacni hodnota. Proste neco, cim identifikujes uzivatele, nebo ji pouzivas k tomu, aby sis overil, ze nahlaseny uzivatel je opravdu on. Vyuzivas toho, ze jiny uzivatel tuto hodnotu nezna, protoze ji bud nedokaze spocitat, nezna vzorecek, nema k dispozici vsechny udaje k vypoctu (ty ma jen server), nebo je generovana nahodne pro docasne pouziti. A je z tak velkeho oboru hodnot, ze hrubou silou by ji zadny pocitac na svete nezjistil (mozna ze zjistil, ale musel by se na kazdou pripojovat na server, a to by asi server tak rychle nezvladl).
Bezne je ID jako klic k tabulce sessions - kterou si zalozis a kam umistis jmeno uzivatele a pripadne nejake docasne informace nutne pro praci se strankou a hlavne cas, do kdy ID plati. Tenhle cas prodluzujes pri kazdem pristupu. Je vhodne pred kazdym prihlasenim nejakeho uzivatele tabulku sessions promazat od vyprselych ID. A je vhodne tabulku sessions definovat jako HEAP (a ne MyISAM)
Je mozne pouzivat i session_start() od PHP, ale podle mne je pomalejsi, pracuje totiz s diskem, ale pristup je samozrejme mnohem jednodussi (i kdyz s pouzitim vhodneho include si muzes usnadnit i ten prvni zpusob).
jak tezke podivat se do referenci :-) kdo by to vedel lepe, nez autori... tuto tezkou praci ti muze ulehcit tento link:
http://www.mysql.com/doc/en/HEAP.html
strucne receno, jsou to tabulky, ktere jsou vytvareny v pameti, takze beh skriptu je pematove narocnejsi, ale pristup k datum je velice rychly - pokud ovsem dojde k padu serveru, o data prijdes (coz ovsem v danem pripade moc nevadi).
>Je mozne pouzivat i session_start() od PHP, ale podle mne je pomalejsi...
...no podle me zase zalezi na konkretnim pripade. pokud by jsi mel db pouzivat jen kvuli uchovavani docasneho id, tak by mozna bylo rychlejsi spoluprace s diskem (zvlast pokud mysql bezi na jinem stroji). ve vetsine pripadech ale mysql pouzivas i pri jina data, takze pak se to hodi pouzit v db. ale zase zalezi na cele optimalizaci a silenosti autora :-)))
m.s.
Mě ale prostě pořád není jasné, jak zjistím, že to či ono ID patří tomu či onomu uživateli.
Ulozis si ho do databaze a pri pristupu si ho zase vyzvednes. MYSQL umis ne?
> Mě ale prostě pořád není jasné, jak zjistím, že to či ono ID patří tomu či onomu uživateli.
Boooze Barto ... ty jsi tak hloupej, az je mi te nekdy lito ... :o) ... to neber osobne :) ...
Musis mit nekde tabulku ID => [uzivatel, expire_date, ... ] ... muzes ji realizovat pres MySQL nebo to ukladat do souboru (napr.: co radek, to jedno ID).
Radek