Professional Documents
Culture Documents
Tema 7
Tema 7
ACȚIUNILOR UTILIZATORILOR
AUTENTIFICAȚI –
AUTORIZAREA ACCESULUI LA
RESURSELE APLICAȚIEI
Observație: Soluția este aplicabilă când din start sunt cunoscute funcționalitățile!
Rezultatul verificării utilizatorului cu rolul
”Vânzător”
Rezultatul verificării utilizatorului cu
rolul ”Manager”
Rezultatul verificării utilizatorului cu
rolul ”Administrator”
Realizarea autorizării
■ La intrarea în fiecare funcție – de
asemenea se recomandă verificarea
rolului și a dreptului de acces,
folosind variabilele de sesiune
definite anterior
■ Eu am realizat funcționalitatea
”vizualizare date produse” care este
accesibilă rolurilor vanzător,
manager și adminstrator, adică cei
cu dreptul de acces 2 sau 3
Inițial verific, dacă utilizatorul care încearcă să
acceseze funcționalitatea de vizualizare este
autentificat și are dreptul de a o accesa
session_start();
require '../config.php';
if(!$_SESSION['id_user']) { header('Location: http://'.$_SERVER['SERVER_NAME'].
$cale.'meniu.php');}
if(!(($_SESSION['roluri_produs_acces']==2)or($_SESSION['roluri_produs_acces']==3))) {
header('Location: http://'.$_SERVER['SERVER_NAME'].$cale.'meniu.php');
}
Intrarea pe această pagină făra autentificare
(ocolirea ei) – nu este posibilă
Afișez datele
<h3>Activitate placuta, <?php echo $_SESSION['denumire_rol']; ?>ule!</h3>
<div class="w3-container w3-xlarge w3-padding-8 w3-right w3-text-green w3-card-16 w3-yellow w3-hover-green"><a
href="../meniu.php">Iesire</a></div>
<h3>Vizualizezi continutul tabelului "produse"...</h3>
<?php require '../connection.php’;
$sqlQwer=mysqli_query($conn, "SELECT denumire, descriere, pret_unitar, imagine FROM produse");
if ($sqlQwer) {
echo '<div class="date_form w3-container w3-border w3-round-xlarge w3-card-8 w3-hover-border-green"><table>';
while($rows=mysqli_fetch_array($sqlQwer)){
echo '<tr>';
echo '<td class="w3-border w3-padding-16"><img width="55" height="47" border="1" src="'.$rows['imagine'].'"</td>';
echo '<td class="w3-border w3-padding-16">'.$rows['denumire']." - ".$rows['pret_unitar']." lei</td>";
echo '<td class="w3-border w3-padding-16">'.$rows['descriere']."</td>";
echo '</tr>';
}
mysqli_close($conn);
echo '</table></div>';
}
?>
Afișarea datelor pentru vizualizare
Iesirea din orice regim
■ Nu uitați la ”ieșirea” utilizatorului să distrugeți sesiunea:
session_start();
session_destroy();
header('Location: http://'.$_SERVER['SERVER_NAME'].$cale);
■ Dacă este prevăzută ieșirea la nivelul anterior, de unde a intrat utilizatorul –
se va realiza sub forma unei referințe obișnuite – doar în pagina aceea se
verifică iar rolul, accesul ... Și nu trebuie distrusă sesiunea curenta
Concluzii
■ Implementând corect principiile folosirii sesiunilor, realizând corect autentificarea și autorizarea
utilizatorului, vom garanta utilizarea corectă a aplicației web și ocolirea vulnerabilității ”Ocolirea
(întreruperea) controlului accesului” și a vulnerabilității ”Identificare și autentificare incorectă” din ”top
10 Vulnerabilități” conform OWASP
– Prezența vulnerabilităților în mecanismele de verificare a ID-ului de utilizator - vizează ocolirea
sistemului de autentificare
– Autentificarea insuficientă - apare atunci când serverul permite accesul la informații sau funcții
importante fără o autentificare adecvată
– Restabilirea necorespunzătoare a parolei - serverul web permite să recuperați, să modificați sau să primiți
parolele ale altor utilizatori, neautorizați
– Autorizarea este necesară pentru a determina nivelul permisiunilor utilizatorilor, care vor să acceseze
resursele aplicației. Atacurile sunt efectuate pentru a avea acces la un conținut sau funcționalități
ascunse