Sunteți pe pagina 1din 18

Antete și funcții HASH în PHP

LECT. UNIV. NATALIA PLE ŞCA


CONŢINUT
Antete – functia HEADER()
Funcții HASH - utilizare
Antete în PHP
header() în PHP este o funcție predefinită, utilizată pentru a trimite un antet
HTTP brut (https://www.simplilearn.com/tutorials/php-tutorial/header-in-php)
Antetele HTTP sunt cele care manipulează cu informațiile trimise de serverul web
către browser înainte ca acesta să trimită orice altă ieșire
Astfel, funcția header() din PHP transmite un antet HTTP brut către browser.
Înainte ca HTML, XML, JSON sau alte rezultate să fie transmise clientului, serverul
trimite date brute ca antete, împreună cu interogarea (în special, o solicitare
HTTP)
Antetele din PHP conțin informații suplimentare despre obiectul livrat în corpul
mesajului, precum și despre interogare și răspuns.
Există două tipuri de apeluri ale funcției header() :
◦ Unul dintre ele este un antet care începe cu „HTTP/” și este folosit pentru a determina
codul de stare HTTP ce trebuie transmis
◦ Celălalt este „ Location”
FUNCŢIA HEADER()
Funcţia header() expediază un singur antet și se apelează înaintea oricărui tag
HTML sau oricare altă ieşire
Sintaxa: header(string, replace, http_response_code)
Parametru Descriere
string Obligatoriu. Specifică textul antetului care va fi expediat clientului. Poate
lua una din valorile care încep cu HTTP/ - se utilizează pentru expedierea
codului de stare sau Location: -
header("Location: http://www.example.com/");
sau header('Content-Type: application/pdf');
replace Opţional. Indică dacă antetul ar trebui să înlocuiască antetul anterior sau
se va adăuga un al doilea antet. Implicit este valoarea TRUE (va înlocui).
FALSE - permite mai multe anteturi de același tip
http_response_code Optional. Forțează codul răspunsului HTTP la valoarea specificată
(disponibil în PHP 4.3+). Acest parametru va fi funcțional numai dacă
string nu este vid
RECOMANDARE
UTILIZARE
Incepând cu PHP 4.4 această funcție este recomandată
a fi utilizată pentru a împiedica transferul a mai mult de
un antet, simultan, spre client
Aceasta reprezintă o modalitate de protecție împotriva
atacurilor de injecție de antete
Alte utilizari: http://php.net/manual/en/function.header.php,
https://appdividend.com/2019/08/16/php-header-function-example-h
eader-method-in-php-tutorial/
Utilizare funcția Header()
Începând cu PHP 4.4, această funcție este folosită și pentru a dezactiva
stocarea datelor în cache
Scripturile PHP generează adesea conținut dinamic care nu ar trebui să
fie stocat în cache-ul browser-ului sau de orice middleware, cum ar fi
serverele proxy
Este posibilă forțarea ca stocarea în cache să fie dezactivată pe multe
servere proxy și browsere prin utilizarea antetelor
Exemplu: header ("Cache-Control: no-cache");
- Forțează browserul să nu memoreze date în cache
Cache-ing = stocarea datelor la nivel local, pentru a accesa rapid datele în viitor
memorarea în cache permite stocarea resurselor web la distanță atunci când datele sunt
transmise de la server la browserul utilizatorului. De asemenea, browserul stochează în
cache date, astfel încât clienții să nu solicite în mod repetat aceleași resurse
Exemplu utilizare header()
…if ($exist==true){
header('Location: http://localhost/cursL/inreg_aut_file/meniu.php');
} else {
header('Location: http://localhost/cursL/inreg_aut_file/');}...

PS: Ce este marcat cu galben, poate fi păstrat într-o variabilă sau mai pot fi
utilizate și superglobale, astfel:
header('Location: http://'.$_SERVER['SERVER_NAME'].$cale.'meniu.php’);
unde $cale = "cursL/inreg_aut_file/"; - în cazul meu
Inregistrarea unui utilizator
într-o aplicație
Înregistrare = Creare cont = Sign Up
Crearea unui cont într-o aplicație sau site web, are avantaje - și
utilizatorul trebuie să le cunoască. Un utilizator se înregistrează: pentru
a putea intra mai târziu într-un spațiu închis/ restricționat sau pentru a
i se face livrarea produselor cumpărate dintr-un magazin online etc.,
etc.
(
12 Ways to Create a User-Friendly Website Registration Process (hubsp
ot.com)
)
Ar fi bine ca în formularul de înregistrare să fie solicitate doar date utile
aplicației, precum: numeUtilizator (userName)/ email, parola, alte
câteva date de contact pentru a putea interacționa cu el... Contează
foarte mult care este destinația datelor colectate de la utilizator prin
formularul de înregistrare...
Exemple formulare de
inregsitrare
Credențiale
Credențialele se referă la posibilitatea verificării identității unui
utilizator/ sistem sau se pot referi la instrumentele utilizate
pentru autentificare
Acestea pot deriva dintr-un certificat sau dintr-un alt proces,
precum cel de înregistrare și pot fi utilizate de procesul de
autentificare
Credențialele ajută la confirmarea identității unui utilizator
Într-o aplicație web vom considera credențiale
userName-ul și parola (pasword)
SignUp VS SignIn
Autentificare
Autentificarea este procesul de a determina dacă cineva sau ceva
este, de fapt, cel care pretinde că este
Procesul de autentificare presupune controlul accesului la sisteme
informatice sau aplicații, prin verificarea dacă credențialele unui
utilizator se potrivesc cu credențialele stocate într-un fișier sau bază
de date, ale utilizatorilor
Autentificarea asigură că sistemele informatice sau aplicațiile sunt
securizate
Notă: pentru ca să existe această siguranță că un utilizator interacționează cu
un sistem securizat, atât procesul de autentificare, cât și cel de înregistrare –
trebuie corect implementate
Tipuri de autentificări
Cea mai simplă metodă de implementare a autentificării într-o
aplicație web este autentificarea prin parolă – un cuvânt secret
cunoscut doar de utilizator... Se mai numește această metodă și
autentificare printr-un singur factor (
What is single-factor authentication (SFA)? | Definition from TechTarget)
Dar... există și noțiunea de autentificare multifactorială
În ultimii ani, tot mai multe companii au implementat autentificarea
solicitând factori de autentificare suplimentari, cum ar fi un cod unic
care este furnizat unui utilizator pe un dispozitiv mobil sau atunci când
se încearcă o semnătură biometrică, se solicită o scanare facială sau o
amprentă digitală. Aceasta este cunoscută sub numele de
autentificare cu doi factori (2FA -
What is Two-Factor Authentication (2FA) and How Does It Work? (techtarget.com)
)
Autorizarea
utilizatorului
Autorizarea se referă la drepturile de acces ale utilizatorilor și la
ceea ce poate face un utilizator într-o aplicație sau un sistem
informatic
Autorizarea este de obicei folosită ca mijloc de control al accesului
la resursele dintr-un sistem informac sau aplicație. Aceasta implică
verificarea identității unei entități (utilizator/ dispozitiv/ sistem) și
determinarea dacă acea entitate are permisiunea de a opera cu o
anumită resursă
Acest proces este de obicei gestionat de sistemele de autorizare,
care verifică credențialele în raport cu regulile prestabilite, la etapa
de formulare a cerințelor și de definire a rolurilor și ale drepturilor
de acces per rol la resursele aplicaței sau sistemului
Codificarea
PAROLELOR
În aplicațiile web cel mai frecvent autentificarea se implemenează prin utilizarea
parolelor – cuvintelor secrete. Parolele fac parte din categoria datelor sensibile și nu
se recomandă să fie pătrate sub formă de text (deschis) în fișiere sau BD
Se recomandă ca parolele, păstrate în fișiere, BD, să fie ascunse ochiului uman –
adică trebuie să fie aplicate funcții-hash
Există mai mulţi algoritmi de hash-ing, implementaţi în funcţii PHP: md5() –
criptează un string, sha1() etc.
Suplimentar este funcția hash(), ce permite specificarea unui algoritm de hashing:
hash(sha256, "password");
Funcția md5() generează codul hash MD5 al unui șir de simboluri (un text cu
lungimea de 32 de simboluri)
Această funcţie nu permite decodificarea datelor deja codificate prin intermediul ei
Extras din standardul RFC 1321 - The MD5 Message-Digest Algorithm: "The MD5 message-digest algorithm takes as input a message of arbitrary length
and produces as output a 128-bit "fingerprint" or "message digest" of the input. The MD5 algorithm is intended for digital signature applications, where
a large file must be "compressed" in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem such as RSA.«
Puteti citi suplimentar: https://ru.wikipedia.org/wiki/OWASP
”Sarea” pentru parole
◦ Hashingul parolelor în bază sării se folosește pentru a îmbunătăți securitatea parolei,
adăugând straturi suplimentare, aleatoare, peste procesul de hashing
◦ Sarea (salt) este un șir aleatoriu, sigur din punct de vedere criptografic, care este
adăugat la o parolă înainte de a se aplica hash-ul. Sarea ar trebui să fie stocată împreună
cu hash-ul, ceea ce îl poate pune în dificultate pe un atacator să cunoască textul original
al parolei
◦ Acest proces este adesea folosit în combinație cu, de exemplu bcrypt
◦ Hashingul sărat este un proces mult mai complex și mai sigur, deoarece fiecare hash
necesită utilizarea unei „sări” diferite și aleatorii, care acționează ca un strat suplimentar
de criptare
◦ BCRYPT, ARGON – în PHP poate fi utilizată funcția predefinită password_hash() (
https://www.php.net/manual/en/function.password-hash.php)
Sarcina pentru acasa

http://localhost/exemple/lab4_6_ex/
!!!
Cunoştinţe:

Ce am învăţat la această temă?


Abilităţi

Ce putem face cu cele învăţate?


Atitudini/ Comportament

Ce am putea aplica, cum am aplica şi


unde am aplica abilităţile şi cunoştinţele
obţinute în cadrul acestei teme?

S-ar putea să vă placă și