Skip to content

Mihai Baboi

Vorbim despre mașini, tehnologie și nu numai

Menu
  • Home
  • Despre mine
  • Despre blog
  • Contact
  • Privacy Policy
Menu

Stocarea parolelor – etica si securitate

Posted on September 30, 2010

In acest articol vom trata problema stocarii parolelor in cazul unei aplicatii care are nevoie de autentificare. Stocarea parolelor ridica doua mari probleme. Una de etica si una de siguranta.

Problema de etica este: Ca administrator al unui site/aplicatii este normal sa pot vedea ce parola are fiecare utilizator in parte?

Am fi tentati sa spunem ca da. Ca in calitate de administrator trebuie sa avem un control asupra a ceea ce face un utilizator (mai ales daca acesta poate adauga continut).

Ei bine, dupa parerea mea, raspunsul este NU. Administratorul site-ului nu trebuie sa aiba acces la parolele utilizatorilor. El nu trebuie sa stie care sunt acestea. Ai nevoie de acces la orice continut de pe site? Autentifica-te cu un cont cu drepturi elevate. Ca administrator ar trebui sa ai control de la tine din cont, fara sa te folosesti de cel al utilizatorului.

A doua problema care se pune este cea de securitate. Daca parolele sunt stocate in clar in baza de date avem o vulnerabilitate. Sa presupunem ca intr-un fel sau altul, cineva reuseste sa puna mana pe baza de date.

Da, stiu, asta este din start o problema dar nu despre ea discutam acum. Sa presupunem ca cineva rau voitor a reusit sa sparga sistemul si are acces la baza de date. Daca parolele sunt stocate in clar, ele pot fi folosite de cei care au comis frauda.

Deci, ce putem face pentru evitarea acestor neplaceri? Criptam parola inainte sa o stocam. Mai exact, luam parola din formularul de autenficare si o criptam inainte de salvarea in baza de date.

<?php

	$password = $_POST['password'];
	$password = md5($password);

?>

Codul nu va arata, evident, exact ca in exemplul meu. Voiam doar sa va arat principiul. Anume, luam parola din $_POST si o criptam cu ajutorul algoritmului md5(). Mai departe urmeaza sa stocam parola in baza de date.

Am ales algortimul md5() pentru criptare pentru ca acesta este ireversibil. Nu are exista o metoda pentru decriptarea lui. Daca am fi folosit in schimb base64_encode() cineva ar fi putut sa vina si sa aplice un base64_decode() si ar fi obtinut parola in clar.

Tin sa mentionez aici ca si MySQL are o metoda md5() care face acelasi lucru, asa ca daca preferati, puteti sa criptati parola la acest nivel. Asta inseamna ca in loc sa prelucram datele in PHP, ca in exemplul de mai sus, vom avea un INSERT in MySQL de forma:

INSERT INTO user(id, username, password) VALUES(1, 'mihai_baboi', md5('parolaMea'));

Procedura de mai sus se aplica la crearea unui cont, unde utilizatorul alege o parola si aplicatia o stocheaza in baza de date. Dar ce facem atunci cand trebuie sa autentificam utilizatorul? El ne da o parola de forma parolaMea, iar in baza de date avem 14f9e87ba3b3a0abc5f0fefa45605ced.

In cazul aceste trebuie sa criptam ceea ce vine din formular inainte de validare.

<?php

	// Aducem parola asa cum este ea in baza de date
	$dbPassword = getDbPasword();

	// Incarcam o variabila cu ceea ce vine de la input
	$userPassword = $_POST['password'];

	// Comparam cele doua valori
	if($dbPassword == md5($userPassword))
	{
		return true;
	}

?>

Nu vom discuta metoda getDbPassword(). Ea este acolo strict ca sa ilustreze ca valoarea respectiva vine de undeva din baza de date. Ce este de observat este faptul ca se face comparatie intre valoarea din baza de date si rezultatul criptarii parolei venite din formularul de autentificare.

Acesta este felul in care putem rezolva atat problema de securitate cat si pe cea de etica in ceea ce priveste stocarea parolelor. Prin criptarea lor ne asiguram ca nici noi si nici terte persoane nu au acces la aceasta informatie cu caracter strict confidential.

Sursa foto.

Share this:

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Analiză Tehnică
  • Auto
  • Comunicate
  • Concurs
  • Diverse
  • Evenimente
  • Foto
  • Hardware
  • Întreabă-mă
  • Lansări
  • Mașini
  • Noutăți auto
  • Opinie
  • Programare
  • Review
  • Scurte
  • Șed și Cuget
  • Zvonuri

allview Android aspect asus autonomie browser bune practici camera CodeIgniter Code Igniter Cold Fusion concurs css3 display div dual core Evolio evoMAG evoMAG.ro foto hardware HTC html html5 instalare lansare laptop Library libris.ro marketonline nokia performanta pret programare review samsung Samsung Galaxy S II smartphone specificatii standarde Symbian tableta teste upgrade user experience

©2025 Mihai Baboi | Design: Newspaperly WordPress Theme