| | |
| Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Autor | Správa |
---|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
cafko...robim prihlasenie na stranku a chcem sa spytat ktore udaje od uzivatela mam zachovavat v session ked aj chcem overovat na inych strankach ci je prihlaseny a ake ma prava ci ma dostatocne prava na prehliadanie danej stranky atd...ako som pozeral vacsina ludi uklada meno a heslo ale niekde na nete som cital ze tam to heslo nieje bezpecne...a este mozno trosku odveci...ako spravit aby sa mi do db zapisal datum posledneho prihlasenia na web a ako mu do db taktiez zapisat ip z ktorej sa prihlasil??? tabulky mam spravene len mi to akosi nieje jasne ako to spojazdnit...viem ze sa to da aj pomocov session ze si ulozim do nej aktualny datum a ip ale ako to zapisat a ako to zapisat do db...thx ak sa to tu riesilo tak sry vcera do noci som to hladal ale akosi som to nezaregistroval
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 13.07.2008 13:07 | |
|
do db to predsa zapises ako hocico ine. pole kde chces posledny cas prihlasenia daj ako timestamp a nastav ho na current timestamp. pri kazdom update sa ti zmeni na aktualny datum a cas. ip zistis pomocou $_SERVER['REMOTE_ADDR']. a v session uchovavam len identifikator, podla ktoreho vytahujem potom prava a podobne veci z db.
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
hmmmmcize navrhujes ak som dobre pochopil id uzivatela???a potom vsetko pomocov toho id vycucat z db??? a ako potom vyzera script na overenie???
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 13.07.2008 13:17 | |
|
nie id uzivatela. pri kazdom prihlaseni vytvorim idsessiony, ktore priradim v db k uzivatelovi. cize pre kazde prihlasenie je to id ine.
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
hmmm akosi som to moc nepochopil...nemas nejaky link kde je to rozpisanejsie???lebo akosi mi to nejde do hlavy neviem si to predstavit ako to bude fungovat a ako to ma vlastne vyzerat
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 13.07.2008 13:27 | |
|
uzivatel sa prihlasi, vytvoris nejaky nahodny identifikator(napriklad md5($aktualnyDatumCas.$nick)), ten ulozis do session a zaroven aj do db prihlasenemu uzivatelovi. a ten ti po dobu prihlasenia sluzi na overenie. ked je v session aj v db rovnaky, jedna sa o daneho uzivatela
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
mnooo uz som asi pochopil co tym myslis...ale tak to by som mal spravit stlpec napr status kam sa to bude zapisovat alebo ako???
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 13.07.2008 13:33 | |
|
bud, alebo este lepsie, sprav dalsiu tabulku, kde budes uchovavat id prihlaseneho uzivatela a id session
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 20.02.08 Prihlásený: 17.04.14 Príspevky: 108 Témy: 22 |
vdaka suchy za radu... ja som do session ukladal prihlasenie s hodnotou 1, username a id uzivatela ... Tvoja rada mi velmi pomoze...
Len este jedno... Nebolo by to dobre, keby sa prihlasenim vlastne vytvorila docasna tabulka? teda tabulka, ktora sa sama vymaze po uzavreni spojenia s databazou? ci to je blby napad?
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
pozri poviem ti to polopate ... načo sa pýtaš??
ak chceš tak si uchovávaj ID uživateľa, zapíš dátum, nick však si zapíš čo len chceš ...
avšak pozri keď si zapíšeš Hodnost tak pokial session existuje tak je prihlaseny aj vieš jeho hodnost ...
2. vec. 2.riešenie:
V tabuľke s uživateľmi pridáš polôžky: IP, Cas
a pri prihlásení sa ti zapíše IP (ako to ti už napísal suchy) a taktiež dátum ... najjednoduchšie príkazom NOW() v databáze ...
pokiaľ chceš vedieť z akých IP sa prihlásil vytvor tabuľku IP s hodnotami: ID, ID_user, IP, Cas pričom ID je jedinečný auto inkrement kľúč, ID_user je forget key na user.ID, IP je IP prihlásenia ..., Cas taktiež Timestamp a NOW() a máíš v podstate všetko ...
|
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
Tominator este raz si precitas moj prispevok...pisal som tam ze som videl ze vacsina uklada meno a heslo a zatim ze som cital ze to nieje bezpecne...tak ocakaval som odpoved ako mi dal suchy cize nieco co by bolo efektivne a bezpecne nie toto Citácia: pozri poviem ti to polopate ... načo sa pýtaš?? ak chceš tak si uchovávaj ID uživateľa, zapíš dátum, nick však si zapíš čo len chceš ... ...jedine s cim si mi pomohol je asi ten prikaz NOW() ostatne sa mi zda dost odveci lebo vsetko tu bolo spomenute...pisal som ze tabulky mam spravene ale ajtak diki za radu a za snahu
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
ono pozri ako ti mám odpovedať čo si dať do session, tak Heslo by som si ja nedal, ale nemôžem vedieť čo sa ti zíde ... ono dá session sa dá všelijako využiť ...
neviem vravím ti abstrakne ale to závisí od každého individuálne ...
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 |
Ja dávam do SESSION iba userid, všetko ostatné sa ťahá z databázy. Teda, všetko ostatné je asi 5 položiek.
|
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
oki diki vsetky ak este niekoho nieco napadne tak kludne piste...este by som sa chcel spytat coho sa vyvarovat pre tvorbe prihlasenia??? co osetrit naco nezabudnut a pod...thx
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 |
SQL injection - treba ošetriť všetky vstupy, teda hlavne čo sa týka užívateľského mena resp. e-mailu. Ja ošetrujem iba užívateľské meno / e-mail, pretože heslo hneď zašifrujem cez md5().
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
ok takto:
pepek: ja väčšinou rátam s veľkou účasťou na stránke, takže každý dopyt na MYSQL spomaľuje chod takže aj tých 5 údajov mám v session
Blackdevil:
1, musíš mať dobré nastavené HTML, teda nastaviť maximálne rozmery mena - maxlenght, vyvarovať sa zbytočných hlúpostí hidden inputov a pod. pretože firefox má rozširenie a ním v pohode zmeníš hocijakú vec čo je HTML + inline JS
2, ošetrovať vstupy:
keďže vstupy sa dajú podstrčiť tak ja to ošetrujem tak že mám trim - htmlspecialchars a to následne kontrolujem regulárnym výrazom ...
čo sa týka hesla tak MD5 (ale ja mám aj celý predchádzajúci postup)
e-mail oštrujem regulárnym výrazom ...
3, ďalej pokiaľ posielaš niečo v adrese napr. ID článku kontrolujem funkciou is_numeric() alebo regulárnym výrazom ... v podste kď vieš regulárne výrazy veľa ti to pomôže
4, foto: keď si pozrieš hneď prvý topic v tejto sekcií nájdeš tam príspevok sucheho ktorý ukazuje ako dobre kontrolovať obrázky. Ja robím niečo podobné ... pri nahrávaní obrázku môžeš použiť napr. ošetrovanie prípony takto:
Kód: $_FILES['foto']['type']=="image/pjpeg" OR $_FILES['foto']['type']=="image/x-png" OR $_FILES['foto']['type']=="image/gif"
alebo rozdelíš názov súboru napr. exlplode alevbo regulárnym výrazom a v podstate $pole[1] je prípona ktorú ďalej ošetruješ keď vieme že obrázok je správny ošetríme veľkosť Kód: if($_FILES['foto']['size']<30000){ ... ... ... }
je to v bajtoch takže toto je 30kB
keď ti to prešlo aj touto podmienkou môžeš fotku slobodne nahodiť na server ...
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 |
Tominator píše: 1, musíš mať dobré nastavené HTML, teda nastaviť maximálne rozmery mena - maxlenght, vyvarovať sa zbytočných hlúpostí hidden inputov a pod. pretože firefox má rozširenie a ním v pohode zmeníš hocijakú vec čo je HTML + inline JS
Čítaš, čo píšeš? Nastaviť v HTML maxlenght je úplne zbytočné a to práve kvôli tým rozšíreniam. Veď si to napísal v jednom bode, sám si protirečíš
Najlepšie je kontrolovať vstup až v PHP a nie v HTML kóde (pomocou maxlenght a podobných).
Čo sa týka legurálnych výrazov, tu je príklad na kontrolu užívateľského mena:
Kód: if (!ereg('^[A-Za-z0-9_]{4,20}$', $_POST['uziv_meno'])) { echo ('Zadajte správne užívateľské meno'); } Vysvetlenie:- užívateľské meno musí obsahovať alphanumerické znaky t.j. všetky veľké a malé písmená bez diakritiky + čísla a/alebo podtržník (to je toto: _) - minimálna dĺžka už. mena musí byť 4, maximálna 20 Mimochodom, nemám pocit, že by sa toto týkalo prihlasovania, keď už sme pri tom. Totiž pri prihlasovaní overuješ existenciu užívateľovho mena / e-mailu z databázy. Tam stačí ochrana proti SQL injection a XSS. Príklad: Kód: <?php function vycistit($string, $typ=VSTUP) { $string = ($typ == VSTUP ? addslashes($string) : stripslashes($string)); $string = strip_tags($string); $string = htmlspecialchars($string); return $string;
}
if (!empty($_POST['odosli'])) { $meno = (!empty($_POST['meno']) ? $_POST['meno']:false); $heslo = (!empty($_POST['heslo']) ? $_POST['heslo']:false); if ($meno && $heslo) {
$_meno = vycistit($meno); $heslo = md5($heslo);
$poziadavka = @mysql_query("SELECT * FROM uzivatelia WHERE meno='$_meno' AND heslo='$heslo'"); if (@mysql_num_rows($poziadavka)) { //pokračovanie skriptu s prihlásením } else { echo ('Zadali ste chybné meno alebo heslo.'); $heslo = null; }
} else { echo ('Zadajte meno a heslo!'); $heslo = null; }
} ?>
<form action="prihlasenie.php" method="post"> <input name="meno" value="<?php echo ($meno ? vycistit($meno, VYSTUP):''); ?>" /> <input name="heslo" type="password" value="" /> <input type="submit" name="odosli" value="Prihlás ma" /> </form>
Pozn.: Je to narýchlo napísané, ospravedlňujem sa za prípadné chyby. Testoval som, tak by to malo fungovať.
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
pepek92 píše: Čítaš, čo píšeš? Nastaviť v HTML maxlenght je úplne zbytočné a to práve kvôli tým rozšíreniam. Veď si to napísal v jednom bode, sám si protirečíš
to sa na prvý pohľad zdá, akurát uvažujem aj nad IE, a zdôrazňujem som že maxlenght je vhodné na ochranu pred dlhými reťazcami pod IE ale určite nie vhodné bezpečnostné opatrenie
|
|
| Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Jednoduche prihlasenie pomocou SESSION v PHP, ASP | 5 | 1504 | 24.10.2007 1:21 mondzo | | prihlasenie v PHP, ASP | 4 | 673 | 19.04.2011 18:14 Gropi | | Prihlasenie v Redakčné systémy | 5 | 548 | 12.02.2007 8:46 mokus | | prihlasenie v Operačné systémy Microsoft | 3 | 774 | 20.01.2006 8:12 michal.h | | Prihlasenie v Redakčné systémy | 4 | 609 | 29.11.2007 16:23 pleso | | prihlasenie v PHP, ASP | 1 | 318 | 17.02.2014 21:57 BX | | prihlasenie v Databázy | 1 | 913 | 28.07.2007 15:09 eiger33 | | Prihlásenie v PHP, ASP | 21 | 962 | 08.03.2011 23:26 walther | | Session v PHP, ASP | 2 | 499 | 25.02.2010 14:59 arno | | session v PHP, ASP | 1 | 539 | 29.06.2009 17:51 emer | | session v PHP, ASP | 1 | 542 | 28.12.2008 13:43 Tominator | | Session v PHP, ASP | 1 | 650 | 29.09.2008 0:28 chrono | | SESSION v PHP, ASP | 1 | 562 | 26.03.2009 19:36 Ďuri | | session v PHP, ASP | 24 | 1911 | 19.01.2007 18:27 m@-nX | | SESSION v PHP, ASP | 7 | 645 | 11.10.2007 14:37 xxxmiroxxx | | Prihlásenie veterána v Automobily, motorky | 7 | 4420 | 06.04.2015 16:57 Laky21 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|