PHP omogoča ustvarjanje dinamičnih spletnih obrazcev, obdelavo uporabniškega vnosa, validacijo podatkov in odzivanje na uporabniške interakcije. Obrazce najpogosteje uporabljamo za zbiranje podatkov, kot so kontaktni obrazci, prijave ali registracije novih uporabnikov. Spodnji primer prikazuje osnovno strukturo HTML obrazca in PHP skripta za varno obdelavo.
Pri delu z obrazci sta ključni dve stvari: uporabniška izkušnja in varnost. Poskrbeti moramo za ustrezno validacijo na strani strežnika, da preprečimo vnos napačnih ali zlonamernih podatkov. V spodnji tabeli boste našli napredne primere za registracijo in prijavo. Začnimo s preprostim primerom, ki sprejme ime in e-poštni naslov. Uporabili bomo metodo POST, saj je varnejša za pošiljanje podatkov na strežnik, kjer jih bo obdelala datoteka procesiranje.php.
procesiranje.php z metodo
POST.$_SERVER["REQUEST_METHOD"]).$_POST.htmlspecialchars(), ki prepreči XSS napade (vstavljanje zlonamerne kode) s
pretvorbo posebnih znakov.Za profesionalno validacijo uporabljamo funkcijo
filter_var, ki varno preveri obliko e-poštnega naslova. Poglejmo si
nadgrajen primer datoteke procesiraj.php:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Branje in osnovna zaščita podatkov
$ime = htmlspecialchars($_POST['ime']);
$email = htmlspecialchars($_POST['email']);
// Napredna validacija
if (empty($ime)) {
echo "Ime je obvezno polje.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Neveljaven format e-poštnega naslova.";
} else {
echo "Hvala, " . $ime . "! Vaši podatki so bili uspešno prejeti.";
}
} else {
echo "Neposreden dostop do skripte ni dovoljen.";
}
?>
| Vnosni obrazec | V tem primeru nam bo spletna stran ponudila vse vnose za vpis. Po vpisu se podatki izpišejo in se ne shranjujejo nikamor. | Glej primer |
|---|
Zaščita gesel v PHP je pomembna za zagotovitev varnosti uporabniških podatkov. PHP ponuja različna orodja in funkcije za varno shranjevanje in preverjanje gesel. Poglejmo si nekaj ključnih točk:
password_hash za varno zgoščevanje (hash).BCRYPT.password_hash opravi vse.| Zaščita gesla | Zaščita gesel je ključnega pomena za varnost uporabniških računov in aplikacij. | Glej primer |
|---|
Gesla morajo biti vedno ustrezno zgoščena (ang. Hashed) pred shranjevanjem v bazo podatkov, ker, če pride do vdora v bazo, uporabniki ne smejo biti dodatno ogroženi zaradi razkritja novih gesel. PHP je uvedel funkcijo password_hash ravno zaradi tega in uporablja najnovejše in varne algoritme za izdelavo "hash-a". Ta funkcija upravlja tudi s salting-om (soljenjem), kar pomeni, da avtomatsko doda naključne vrednosti k našemu geslu za dodatno varnost. Primer uporabe:
// geslo uporabnika
$geslo = "MojeZeloMocnoGeslo123!";
// zgoščevanje (hash) gesla
$gesloHash = password_hash($geslo, PASSWORD_DEFAULT);
// izhod za shranjevanje v bazo podatkov
echo $gesloHash;
Funkcija PASSWORD_DEFAULT trenutno uporablja algoritem bcrypt, vendar
lahko v prihodnosti preide na bolj varen privzeti algoritem, če bo na voljo. Ko uporabnik vpiše svoje geslo (npr. med
prijavo), uporabimo funkcijo password_verify, da primerja vneseno geslo z že shranjenim "hash-om".
Primer:
// geslo uporabnika
$geslo = "MojeZeloMocnoGeslo123!";
// zgoščevanje (hash) gesla
$shranjenHash = "$2y$10$wYrFr1vZyxE/DoTGMNOxBritish5764JsqzBYzNOdcdWy1zqHmuUG8";
// preverjanje gesla
if (password_verify($geslo, $shranjenHash)) {
echo "Geslo je pravilno.";
} else {
echo "Geslo je nepravilno.";
}
Pomembno je vedeti, da password_verify vrne true, če se ujemata, v
nasprotnem primeru vrne false. Priporočeno je, da uporabljamo BCRYPT ali močnejše algoritme,
kar trenutno uporablja password_hash. Lahko pa se izrecno odločimo za druge
algoritme, npr. PASSWORD_ARGON2I ali PASSWORD_ARGON2ID, če potrebujemo višji nivo varnosti.
$hash = password_hash($password, PASSWORD_ARGON2I);
Priporočljivo je redno posodabljati hash. Če nadgradimo na bolj kompleksen algoritem, lahko izkoristimo password_needs_rehash, da preverimo, ali je hash zastarel.
if (password_needs_rehash($shranjenHash, PASSWORD_ARGON2I)) {
$shranjenHash = password_hash($geslo, PASSWORD_ARGON2I);
}
Tudi najbolj varen hash ne bo pomagal, če bosta baza podatkov ali aplikacija ranljivi. Poskrbeti
je potrebno za zaščito baze (npr. PDO in pripravljenih poizvedb za preprečevanje SQL vbrizgov). Brez potrebe ni potrebno
implementirati lastnih mehanizmov za dodaten salting (soljenje), ker funkcija
password_hash opravi to sama. Kar pa se tiče vdorov priporočam zelo močno
geslo za bazo podatkov, ker samo tako se lahko zaščitimo, če pa do vdora pride, je potrebno vsem uporabnikom sporočiti
za ponastavitev gesla. Priporočljivo je tudi implementirati spremljanje sumljivih aktivnosti, kot recimo ponavljajoči
poskusi prijave. Funkcija password_hash in spremljajoče funkcije, kot so
password_verify in password_needs_rehash, zagotavljajo popolna orodja za varno delo z gesli.
Izogibati pa se je potrebno starejšim metodam, kot je md5 ali
sha1, ker niso več varne.
| Upravitelj gesel | Shranjevanje, upravljanje in organiziranje šifriranih gesel, shranjenih v JSON datoteko. | Glej primer |
|---|
Hvala za obisk! Dodajam politiko zasebnosti.
© 2024 Vse pravice pridržane.
Vam je koda pomagala? Če želite podpreti moj trud pri pripravi vodičev in vzdrževanju strani, mi lahko namenite donacijo za kavo.