Autor | Zpráva | ||
---|---|---|---|
intimidant Profil * |
#1 · Zasláno: 5. 6. 2006, 23:40:41
Dlouho jsem hledal dobrý přihlašování, nakonec jsem zvolil kombinaci JS a PHP. jelikož si myslím, že to dost lidí ocení, předkládám ho tady. Navíc prosím zkušenější programátory o připomínky k mému kódu, jestli není někde díra... Díky
ještě poznámka - budete potřebovat stáhnout sha1, třeba odtud: http://pajhome.org.uk/crypt/md5/sha1.js a tohle je kód formuláře v souboru auth.php <? echo "<script type='text/javascript' src='sha1.js'></script>"; echo "<br><center>Pro přihlášení musíte mít povoleny cookies a javascript.</center>"; echo "<br><form method='POST'>Uživatel:<input type='text' size='20' name='uzivatel'><br>"; echo "Heslo: <input type='password' size='20' name='heslo'>"; echo "<input type='submit' onclick='sha1_heslo.value = hex_sha1(heslo.value)' value='Přihlásit'><input type='hidden' name='sha1_heslo'></form>";//tohle převede heslo na sha1 ještě než ho odešle na server ?> na další stránce proběhne kontrola s db, něco jako <? if($_POST["heslo"]===$db["heslo"]) { $_SESSION["logged"] = true; } ?> na každé chráněné stránce se zeptáme, jestli je v $_SESSION["logged"] hodnota true <? if(isset($_SESSION["logged"])) { if($_SESSION["logged"] !== true) { Header("Location:auth.php"); } } else { Header("Location:auth.php"); } ?> Můžete mi to někdo zkontrolovat? díky |
||
piko.x Profil * |
#2 · Zasláno: 5. 6. 2006, 23:45:45
dobrá práce, kámoš to myslím řešil podobně ;)
|
||
Leo Profil |
#3 · Zasláno: 5. 6. 2006, 23:57:11
Onclick na submitu bych urcite nahradil onsubmit na formu, Leo
|
||
tajo Profil * |
#4 · Zasláno: 6. 6. 2006, 07:08:30
no nevim nakolik je rozumné spoléhat se na to, že má uživatel povolený JS, tot otázka...
|
||
krteczek Profil |
#5 · Zasláno: 6. 6. 2006, 07:41:57
Jestli se nepletu tak z hashe hesla děláte heslo na nezabezpečené cestě... Je to drbání se pravou rukou na levé hýži... jestli chcete bezpečný přenos dat používejte ssh nebo jinou technologii, popřípadě tam kde ssh neni možne ,klienta který bude zvládat asymetrické šifrování (třeba 128bit) a serverovou aplikaci která si příchozí data dešifruje a šifrovaná data opět odesílá.... krteczek
|
||
joejoe Profil * |
#6 · Zasláno: 6. 6. 2006, 11:07:54
udelal jsem neco podobneho:
http://www.volny.cz/joejoe/download/php_auth.rar |
||
finc Profil |
#7 · Zasláno: 6. 6. 2006, 15:03:39
to krteczek: nemel jste na mysli SSL?
to intimidant: Po header("Location:") by měl vždy následovat exit(); I když je zde na konci skriptu, tak špatnými návyky se může stát dost závažná chyba. Zde je uvedena navíc session_regenerate_id(); ochrana proti SESSION fixaci. http://php.vrana.cz/prihlasovani-uzivatelu.php |
||
sess Profil * |
#8 · Zasláno: 6. 6. 2006, 16:10:32
na moj vkus tam chyba session_regenerate_id() .sess
|
||
intimidant Profil * |
#9 · Zasláno: 7. 6. 2006, 12:47:09
díky všem za připomínky :) určitě to předělám
to krteczek: podle mě to není až tak beze smyslu. je pravda, že nemám možnost použít ssl, ale myslím si, že je lepší odesílat nezabezpečeně hash hesla, než heslo v otevřené formě. nebo se pletu? když někdo zychytí hash, je mu celkem k ničemu, ale když zachytí otevřené heslo, prostě ho naťuká a přihlásí se... |
||
krteczek Profil |
#10 · Zasláno: 7. 6. 2006, 17:57:05
intimidant:jenže vy tím že místo hesla používáte hash děláte z něj heslo, takže proto je to blbost. bezpečnost nezvýšíte, spíše bych řekl že ji snížíte.
Nechal bych posílat normálně heslo (je to bez práce) a staral bych se být vámi o zabezpečení proti ukradení session (kontrola ip => snížení rizika ukradení, navíc všechny formuláře pomocí kterých měníte něco duležitého bych doplnil o skryté pole v kterém bude generonaný náhodný řetězec a před zpracováním dat z formuláře kontrolovat shodnost tohoto řetězce (třeba proti hodnotě uložené v session, databázi...)... krteczek |
||
llook Profil |
#11 · Zasláno: 7. 6. 2006, 19:15:38
Nikde tam nevidím, že bys ten formulářový prvek s nezakódovaným heslem nějak mazal (heslo.value = ''), řekl bych, že ho normálně posíláš. Krom toho je fakt, co říkal krteček - ty z toho hashe vlastně děláš heslo.
Trochu jsem si s tím teďka taky pohrál a vzniklo tohle: <?php |
||
intimidant Profil * |
#12 · Zasláno: 8. 6. 2006, 14:45:09
to krtezcek: Jo, už mi to došlo s tím hashem. Je to pravda. Moc díky za připomínku ohledně session stealing
to llook: díky moc za námět. udělám to podle vašeho kódu, je to moc pěkně napsaný ;) |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0