| login sistem | ||
|---|---|---|
|
uki
20. feb 2010 12:42:35
Pridružen od: 8. dec 2009 19 objav 1 13 0 |
#1
Zanima me če se vam zdi tale zadeva varna? koda: include 'gesla.php'; if ($POST['txtUsername'] != $username || $POST['txtPassword'] != $password) { ?> <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> </form> <?php } ?> <p>Dobrodošli na zavarovani spletni strani.</p> <?php } ?> koda za gesla.php: $username = "admin"; ?> |
|
|
kopriva
20. feb 2010 13:46:42
Pridružen od: 6. nov 2007 1376 objav 2027 207 28 |
#2
Ampak, s tem si samo preveril, če je geslo pravilno in prikazal neko določeno podstran, kjer samo to poveš, da je geslo bilo pravilno vpisano. Večji catch je v tem, kako boš zdaj poskrbel za SESSION ali COOKIE itd ... Brez tega nisi praktično nič naredil. :-) “Everything that happens, happens as it should, and if you observe carefully, you will find this to be so.” ― Marcus Aurelius
|
|
|
uki
20. feb 2010 14:29:18
Pridružen od: 8. dec 2009 19 objav 1 13 0 |
#3
Ja tale zadeva je zaenkrat samo da zavaruje podstran, zanima pa me če jo s tem dobro zavarujem (da se ne da dobit gesla iz kode, ali kaj podobnega). |
|
|
kopriva
20. feb 2010 14:52:42
Pridružen od: 6. nov 2007 1376 objav 2027 207 28 |
#4
Tukaj gre za majhen trade-off: če boš omejil znake, je v teoriji lažje brute-forcat (s poskušanjem ugotovit) geslo, po drugi strani pa lahko določeni znaki uporabnike tako zmedejo, da sploh ne bodo znali pravilno vpisati gesla. Priporočam ti, da se raje omejiš na neke "klasične" znake. Še en praktičen nasvet ... Če gre za case insensitive login, potem vse znake pač vedno daj v lower/upper case, ko jih preverjaš. To pomeni, da če kdo napiše "prAvIlnOgeSLo" ali "PRAVILNOGESLO" ali "pravilnogeslo" - da ga vedno spusti skozi. Drugače pa je kratek in recimo "realen" odgovor na tvoje vprašanje ne - ne da se kar tako dobiti tega gesla iz kode. Moraš biti kar precej štorast, da pridejo do njega. Torej, naj te to ne skrbi. “Everything that happens, happens as it should, and if you observe carefully, you will find this to be so.” ― Marcus Aurelius
|
|
|
uki
20. feb 2010 15:27:47
Pridružen od: 8. dec 2009 19 objav 1 13 0 |
#5
Naletel sem še na eno težavo, ko dodam na stran povezavo do druge podstrani, se da na to drugo podstran dostopat z url-jem, če dam pa še na drugo stran to kodo za login jo je potrebno spet vpisat da prideš do strani. Kako bi to težavo odpravil? |
|
|
kopriva
20. feb 2010 15:31:24
Pridružen od: 6. nov 2007 1376 objav 2027 207 28 |
#6
hehe :-) Se mi je zdelo, da ti to ni najbolj jasno. Zato sem ti tudi že omenil, kje se zna skrivati srž problema. Poglej si malo avtentikacijo/login sisteme s COOKIE-ji ali SESSION-i. Ti moraš "avtentikacijske podatke" zapisati v "cookie". Potem pa na tisti drugi oz. vseh podstraneh, kjer želiš preverjati, če je nekdo zares "prijavljen na stran", prebrati vsebino tega cookie-ja oz. pogledati, ali je sploh zapisan. “Everything that happens, happens as it should, and if you observe carefully, you will find this to be so.” ― Marcus Aurelius
|
|
|
george
20. feb 2010 19:02:51
Pridružen od: 14. jan 2010 10 objav 3 0 0 |
#7
tako kot je kopriva rekel. ali je uporabnik že registriran ali ne si zapiši v session lahko tudi cookie in potem na vsaki strani (kjer pac noces anonimnega dostopa) preverjaj ali je uporabnik ze registriran, in ce ni ga redirectas na to login stran. npr.: ... } <p>Dobrodošli na zavarovani spletni strani.</p> potem pa npr. na zacetku vsake strani (pred HTML <head> tagom!) <?php if($_SESSION["loggedin"] != "true") { se en nasvet je da spravis gesla v loceno datoteko ki jo imas na disku v direktoriju visje od dejanske internet strani. ce imas npr. root strani na c:\inetpub\wwwroot\stran\public\ bi imel file z geslom na npr.: c:\inetpub\wwwroot\stran\private... Je rahlo bolj varno v primeru da nekdo dobi dostop do browsanja filov na root-u tvojga page-a ali pa je pomotoma napacno nastavljeno... Improving web bit by bit http://www.inbit.si
|
|
|
bl4ckb1rd
20. feb 2010 19:10:32
Pridružen od: 18. avg 2008 1122 objav 750 91 11 |
#8
Okej tut sami sessioni niso dovolj... takoj lahko pofejkaš session, treba je še preverjati resničnost sessiona, tako da ga vsakič zapišeš v mysql bazo pod nek ključ, ter dodaš nek timeout, koliko časa je uporabnik lahko neaktiven da je še vedno session aktiven. Pri vsakem dostopu pa seveda preveriš da je ključ na uporabniku isti kot tisti v bazi, ter da je res loggedin true. blackbird.si - Moj plac za odlaganje problemov in rešitev...
|
|
|
uki
20. feb 2010 19:17:03
Pridružen od: 8. dec 2009 19 objav 1 13 0 |
||