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:

<?php



include 'gesla.php';



if ($POST['txtUsername'] != $username || $POST['txtPassword'] != $password) {



?>



<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<p><label for="txtUsername">Uporabnik:</label>

<br /><input type="text" title="Enter your Username" name="txtUsername" /></p>


<p><label for="txtpassword">Geslo:</label>
<br /><input type="password" title="Enter your password" name="txtPassword" /></p>

<p><input type="submit" name="Submit" value="Vpis" /></p>

</form>



<?php



}

else {



?>



<p>Dobrodošli na zavarovani spletni strani.</p>



<?php



}



?>



koda za gesla.php:

<?php



$username = "admin";

$password = "1234";



?>


všeč(0) ni všeč(0) spam(0)
 
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. :-)


všeč(0) ni všeč(0) spam(0)
“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).

Pa še to a bi mogel mogiče omejit znake, ki so primerni za vpis?


všeč(0) ni všeč(0) spam(0)
 
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.


všeč(0) ni všeč(0) spam(0)
“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?


všeč(0) ni všeč(0) spam(0)
 
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.


všeč(0) ni všeč(0) spam(0)
“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.:



...

<?php



}

else {

$_SESSION["loggedin"] = "true";

?>



<p>Dobrodošli na zavarovani spletni strani.</p>

...



potem pa npr. na zacetku vsake strani (pred HTML <head> tagom!)



<?php if($_SESSION["loggedin"] != "true") {

header("location: {$location}");

}

?>



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...


všeč(0) ni všeč(0) spam(0)
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.


všeč(2) ni všeč(0) spam(0)
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
#9

Hvala usm :) Sm zrihut zdei s cookiji pa dela tko k more.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se