» »

Php varen login

Php varen login

Volk| ::

Fantje, kako v php naret varen login?
Seje so bolj varne od cooki-jev(kao), pa vendar, z sejo ne moreš naredit "zapomni si me", ali pač?
Še obstaja kaj drugega, kot seje in cookie? Kaj pa kombinacija kakih "dodatnih" varoval pri preverjanju?
Kak nasvet?
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

Trinitron ::

v sejo hraniš array('id'=>$user_id, 'password'=>$password_hash);
v cookie hraniš json_encode(array('id'=>$user_id, 'password'=>$password_hash));

jype ::

A ni to tko nekak kot bi protivlomna vrata v knauf steno montiral?

Ziga Dolhar ::

Jojme. Uporabniku (v kukiju) nikakor ne vračaš nobenih njegovih podatkov (niti reverzibilno kodiranih), kaj šele takih, ki v enaki obliki (user_id) obstajajo tudi v bazi.

Precej boš naredil že, če boš na strani (tudi login!) uporabljal SSL. Če to ni možno, pa si poglej, kako typo3 za login uporablja rsaauth in saltedpasswords - da že od klienta do serverja ne potujejo plain-text podatki.
https://dolhar.si/

technolog ::

Trinitron je izjavil:

v sejo hraniš array('id'=>$user_id, 'password'=>$password_hash);
v cookie hraniš json_encode(array('id'=>$user_id, 'password'=>$password_hash));


To je šala, kajne?

"Zapomni si me" narediš tako, da podaljšaš čas poteka session piškotku na recimo cirka eno leto.

Zgodovina sprememb…

Volk| ::

Kak lahko podaljšaš session-u, če se pa session kreira na serveru?
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

arjan_t ::

ja, stanje seje je na serverju. ampak da se ve kateremu uporabniku spada katera seja je pri klientu shranjen session ID (ponavadi cookie).

Baja ::

technolog je izjavil:


"Zapomni si me" narediš tako, da podaljšaš čas poteka session piškotku na recimo cirka eno leto.


lahko poveš kaj več informacij glede podaljšanja session cookie-ja? sem na hitro poskusil narediti en test glede tega, pa me odjavi ko zaprem/odprem browser.

drugače pa trenutno izvajam "remember me" tako, da za uporabnika ki zeli to funkcijo, generiram unique string, ga zapisem v bazo in v cookie in kasneje primerjam ta dva podatka. kot dodatno zaščito (v bistvu nevem če kaj pomaga :/ ) ob vsaki autologin prijavi zamenjam ta uniqe string.

lp

Ziga Dolhar ::

https://dolhar.si/

Zgodovina sprememb…

Baja ::

Ziga Dolhar je izjavil:

php session timeout


jep, sem se igral s tem, vendar mi nekako ne uspe :(

technolog ::

Baja je izjavil:

technolog je izjavil:


"Zapomni si me" narediš tako, da podaljšaš čas poteka session piškotku na recimo cirka eno leto.


lahko poveš kaj več informacij glede podaljšanja session cookie-ja? sem na hitro poskusil narediti en test glede tega, pa me odjavi ko zaprem/odprem browser.

drugače pa trenutno izvajam "remember me" tako, da za uporabnika ki zeli to funkcijo, generiram unique string, ga zapisem v bazo in v cookie in kasneje primerjam ta dva podatka. kot dodatno zaščito (v bistvu nevem če kaj pomaga :/ ) ob vsaki autologin prijavi zamenjam ta uniqe string.

lp


To je tudi OK. Če imaš tako že narejeno, ni razloga, da bi spreminjal.

Nextor ::

Volk| ::

Mogoče ima kdo kak primer kako preverjat z ajaxom ali je login ok, oziroma ni ok?
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

technolog ::

Isto kot če bi imel navaden POST, ne vem kaj misliš? :)

t3hn0 ::

Volk| je izjavil:

Mogoče ima kdo kak primer kako preverjat z ajaxom ali je login ok, oziroma ni ok?

Ce prav razumem ta zanima ce session velja pri ajax klicih? Glede na to da sessionid shrani kot cookie in je vezan na eno domeno...ja, bos videl isti session kot v fajlu iz katerega ga klices.
^.^

Volk| ::

Ne, mislil, sem skripto, ki ti javi, če nekdo vpiše napačne podatke, pri pravilnih pa te logina. V ajaxu sem novi pa se lovim.
Nekaj v TEM smislu. Jaz sicer ne uspem usposobit zadeve na moji strani. Gumb prijava ne trza.
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

technolog ::

Jah pošlješ po post, če je login uspešen, naj server vrne prazen dokument, če je napaka pa besedilo napake.

Ti potem z JS preveriš, če je string prazen in od tu delaš naprej.

Baja ::

Volk| je izjavil:

Ne, mislil, sem skripto, ki ti javi, če nekdo vpiše napačne podatke, pri pravilnih pa te logina. V ajaxu sem novi pa se lovim.
Nekaj v TEM smislu. Jaz sicer ne uspem usposobit zadeve na moji strani. Gumb prijava ne trza.


Z jquery-jem bi zgledalo nekako takole.

//index.php
<script type="text/javascript">

	$(document).ready(function(){
		$('#submitLogin').click(function(e){
			e.preventDefault();
			
			$.ajax({
				type: "POST",
				url: "ajax/check-login.php",
				data: $('#loginForm').serialize(),
				dataType: "xml";
				success: function( xml ){
					if ($('stat', xml) == 'login_ok'){
						location.href = 'prijava_ok.php';
					} else {
						location.href = 'prijava_not_ok.php';
					}
				}
			});
			
		});
	});

</script>

<form action="" method="post" id="loginForm">
	<input type="text" name="loginName" />
	<input type="password" name="loginPassw" />
	<input type="submit" name="submit" id="submitLogin" value="Prijava" />
</form>


// ajax/check-login.php
$stat = ($_POST['loginName'] == 'admin' && $_POST['loginPassw'] == '1234') ? 'login_ok' : 'login_failed';
<xml><stat>'.$stat.'</stat></xml>


edit: kode nisem testiral, tako da jo beri bolj kot pseudo kodo, ampak če ni kakekga typo-ta bi načeloma morala delovati.

Zgodovina sprememb…

  • spremenil: Baja ()

Volk| ::

Ok, bom sprobal drug teden.
Ni mi samo nekako jasna povezava med ajaxom in javascript. na prvi pogled to zgleda isto :D
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

Baja ::

AJAX = Asynchronous JavaScript and XML

v bistvu z ajaxom kličeš neko stran/skripto in njen rezultat vrines v naloženo stran.

v zgornjem primeru bi recimo ob uspešnem loginu zamenjal obrazec za prijavo z podatki o prijavljenem uporabniku, seveda mores v xml dodati se tag user

                    if ($('stat', xml) == 'login_ok'){
                        $('#loginForm').innerHTML( 'Pozdravljen ' + $('user', xml).text() );
                    } else {
                        alert('login failed');
                    }

lahko pa tudi vrnes html in vrines vse kaj ajax klic vrne. poglej docs.jquery.com za vse možnosti

Zgodovina sprememb…

  • spremenil: Baja ()

Volk| ::

Hvala za info. če se mi bo kaj zataknilo pa ti bom pisal.
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C# asp.NET web forma] Kam zgine cookie oz. zkj se izbriše?

Oddelek: Programiranje
61116 (930) Morenov
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342767 (1781) Morenov
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262662 (2181) Binji
»

unset cookie

Oddelek: Izdelava spletišč
221858 (1665) tomitza
»

oop+php+sessions

Oddelek: Izdelava spletišč
152588 (55) cahahopie

Več podobnih tem