Vodič je stariji od 2 godine i možda nije u potpunosti aktualan. Za provjeru, koristite “pitaj učitelja”.

Kako napraviti PHP Blog 4.dio – Teorija osnovnog logina

Kako napraviti PHP Blog 4.dio – Teorija osnovnog logina
Autor članka: Igor Benić
Kategorije: Programiranje
Teme:
Datum objave: 01.06.2014

Svaki sustav koji zahtjeva nekakva ažuriranja, upisivanja i slično ima svoj sustav za prijavu u administraciju. Bez takvog sustava svaki korisnik stranice mogao bi pristupiti i unositi ili ažurirati podatke na stranici. U ovom tutorijalu kratko ćemo proći kroz sustav prijave kako bi u sljedećim tutorijalima mogli razumijeti što se događa i zašto.

Načini prijava

U digitalnom svijetu postoje razni načini prijava.

Najklasičniji način prijave je unosom korisničkog računa i lozinke (npr. facebook.com). Kod ovog sustava lozinka se sprema u nekakvom enkriptiranom obliku kako nitko ne bi mogao doznati pravu lozinku. Tako da nekakva riječ kao npr. “Lozinka”, koristeći nekakav enkriptirajući algoritam postaje “b4fi459t93vjk8č76k6m5” ili nešto slično ovome. Time niti administrator naše baze podataka ne može saznati lozinku koju koristi korisnik pri prijavljivanju. Ovakav način prijave ćemo i mi napraviti u sljedećem tutorijalu.

Nadalje, postoje i drugačiji načini kao što su prijavljivanja privremenim lozinkama koje nam sam sustav izgenerira na naš zahtjev te nam pošalje u email, na sms i sl. Postoje i drugi posebni načini dobivanja same lozinke kao što je primjer novih pametnih kartica gdje imamo jednu šifru koja prijavom javlja sustavu da želimo novu privremenu lozinku i zatim nam na kartici ispiše novo izgeneriranu lozinku kojom se možemo prijaviti u npr. NetBanking i sl.

Postoje i prijave koje zahtjevaju duplu autentifikaciju gdje uz računalo možete koristit i mobitel ili nešto slično kako bi si omogućili prijavu u sustav što je malo kompleksnije rješenje koje nećemo prolaziti u ovome tutorijalu.

Načini osiguravanja

Kada se pravi sustav za prijavu mora se misliti na nekoliko slučajeva. Minimalno na što je potrebno misliti jeste provjera svakog unosa kako ne bi došlo do upada u sustav unosom posebnih znakova u formama.

To se radi na način da prilikom slanja podataka odnosno primanja podataka sa login forme, moramo prije spajanja na bazu i izvršavanja upita na bazu podataka, provjeriti sve dobivene podatke koje koristimo u upitu kako ne bi sadržavali znakove koje bi izvršavali neki drugi upit.

Primjer.

Nezaštićena forma prima username:  ‘ or 1=1 ‘–, a SQL je sljedeći: SELECT * FROM users WHERE username = ‘ovdje_ide_userename’ and password=’ovdje_ide_pass’;

Kada se forma pošalje dobiti će se: SELECT * FROM users WHERE username = ” or 1=1 ‘–and password=’pass’ čime smo zakomentirali password, a upit će uspijeti jer 1 je uvijek 1 tako da 1=1 je TRUE, i time je običan SQL Injection izvršen. Naravno tu se može još toga napraviti kao što je unos svojeg username-a i lozinke, brisanje tablica ili zapisa i sl.

Zbog toga je potrebno zaštiti svaki unos koji dolazi sa strane korisnika stranice jer mogu ili namjerno upasti u naš sustav ili slučajno. Niti jedno niti drugo nama ne odgovara.

Još jedan slučaj je kada korisnik koji želi upasti u naš sustav pokušava to izvršavati nekoliko puta. Na primjer, saznao je korisnički račun, samo mu nedostaje lozinka. Ukoliko ima nekakav program ili sl. koji bi mogao lako pronaći lozinku tog korisničkog računa mogao bi jednostavno doći do nje nakon nekoliko pokušaja.

Zbog toga se može napraviti blokada računa nakon tri neuspješna pokušaja. Nakon toga korisnika se može kontaktirati putem emaila, mobitela ili mu dati obavijest prilikom prijave da je njegov račun blokiran te da se javi administraciji kako bi ga odblokirali. Ovo tu možda podsjeća na PINove od kartica ili SIM kartica gdje nakon tri puta, kartice se automatski zablokiraju jer se smatra da se vrši pokušaj upada u mobitel ili sl.

Tijek prijave

Tijek prijave u klasičnom sustavu prijavljivanja koji ćemo mi napraviti u sljedećem tutorijalu opisati će se u sljedećem tekstu.

Prvo korisnik upisuje svoje podatke i pokušava se prijaviti u sustav. Kada on pošalje svoj login podatke, mi pravimo sljedeće:

  • Uzimamo korisnički račun i lozinku u zasebne varijable
  • Provjeravamo ih da li imaju kakve razmake i mičemo razmake
  • Provjeravamo da li su ispravnog formata (npr. lozinka mora sadržavati barem jedno veliko slovo, jedno malo slovo i broj te mora biti najmanje 10 znakova dugačka)
  • Provjeravamo ih da li imaju kakve znakove koji nisu primjereni odnosno zabranjeni
  • Ukoliko provjera ne prođe, prekidamo proces i javljamo korisniku da je pogrešno unio podatka tj. da korisnik ne postoji sa tom kombinacijom, u suprotnom nastavlja se proces
  • Lozinka se pretvara u enkriptirani oblik pomoću algoritma kojeg smo mi odlučili koristiti
  • Spajamo se na bazu te provjeravamo da li postoji korisnik sa tim korisničkim računom i tom enkriptiranom lozinkom
  • Ukoliko dobijemo jedan rezultat, korisnik je dobro unio podatke i prijavio se, u suprotnom opet prekidamo proces i javljamo da ne postoji korisnik sa takvom kombinacijom računa i lozinke
  • Prilikom prijave, šaljemo ga na stranicu administracije (ukoliko to želimo), te spremamo nekakav session na serveru ili cookie u pretraživaču korisnika kako se ne bi prilikom osvježavanja stranice opet morao prijavljivati

Zaključak

U ovome članku upoznali smo se malo sa načinima prijavljivanja, kako jednostavno osigurati sustav prijava te tijek izvođenja prijave na sustav koji ćemo napraviti u sljedećem tutorijalu. Sada kada već znate sam tijek izvođenja probajte i nešto sami napraviti, pa ukoliko ne uspije napraviti ćemo to zajedno u sljedećem tutorijalu. Ukoliko vam uspije opet ćete moći usporediti svoj način proces prijave sa ovim iz tutorijala.

Komentirajte prvi!

Pratite komentare na članak 'Kako napraviti PHP Blog 4.dio – Teorija osnovnog logina' putem RSS feeda.

Ostavite komentar na ovaj članak

Uvredljivi i spam komentari biti će obrisani. Ukoliko se Vaš komentar ne pojavi odmah, pričekajte da ga odobrimo ;-). Odgovore na pitanje brže ćete dobiti ukoliko nas kontaktirate putem forme pitajte učitelja.