Koriscenje MD5 funkcije za sifrovanje stringova (najkorišćenije za lozinke)

Često je poželjno (da ne kažem neophodno) kako bi omogućili recimo korisnicima sajta privatnost što se tiče recimo njihovih lozinki. Konkretno, ukoliko bi neko upao na vaš sajt i ukrao recimo bazu podataka koju koristite da čuvate podatke o korisnicima vašeg sajta, i u njoj su smeštene recimo email adrese i lozinke korisnika sajta, e sad, ljudi često koriste iste lozinke za više sajtova, i ukoliko neko dodje do tih podataka može recimo da im stvori probleme ili sl.Medjutim! Ukoliko neko dodje do email adresa recimo i šifrovanih lozinki to neće moći da zloupotrebi.Kako možemo da iskoristimo recimo MD5 funkciju za šifrovanje lozinki?Lepo, možemo da stavimo da se podaci za lozinke md5-uju prilikom registracije korisnika, i da kad se unose podaci pri logovanju da se opet md5-uju kako bi se uporedjivali sa onim u bazi.md5 funkcija se lako koristi:(primer je za php)

[code]
...
/* $lozinka je promenjiva kojoj dodeljujemo vrednost prosledjen preko POST metode iz forme u kojoj je uneta lozinka */
$lozinka = $_POST["lozinka"];


//nova lozinka (sifrovana)
$sifrovana_lozinka = md5("$lozinka");
...
[/code]

...i sad, ukoliko bi neko preko forme za unos lozinke uneo za svoju lozinku "123" (bez navodnika) njegova lozinka nakon šifrovanja bi bila "202cb962ac59075b964b07152d234b70" (bez navodnika) i takav podatak sačuvamo za lozinku korisnika u bazi umesto sa nezaštićenom "123".Naravno, da bi mogli da se ulogujete morate da uporedjujete opet md5-ovane stringove kad korisnik sa lozinkom "123" pokusa da se uloguje.

Comments (0) Posted to Generalna 01/23/2009 Edit

Logovanje i ogranicavanje pristupa!

Logovanje i ogranicavanje pristupa!

Pozdrav evo me kao sto sam i obecao, nastavljam sa tutorialom. Kao sto i sami znate cesto se javlja potreba da korisnicima ogranicite pristup pojedinim delovima vaseg sajta. Kako to mozemo da uradimo, pa lepo mozemo tako sto cemo da proverimo da li je onaj koji zeli da pristupi nekom delu sajta koji smo zastitili registrovan clan na nasem sajtu (kasnije cemo da vrsimo podelu i po jos nekim kriterijumima) ;)

Za registraciju, tj. dodavanje clanova mozete da iskoristite post "Dodavanje podataka u bazu".

Kako da proverimo da li je neko ko pokusa da pristupi nekom delu sajta zaista u nasoj bazi clanova?

Pa lepo koristicemo filtriranje baze, i ukoliko taj neko ko pokusa da se uloguje i unese prave podatke koje trazimo od njega (korisnicko ime i lozinku) i ukoliko je jedinstven onda cemo da ga izvrsimo neku akciju, u suprotnom poslacemo mu neko obavestenje da ne moze da pristupi.

Kako to izgleda?

Evo ovako, postavicemo na formu 2 edit boksa i u properties-u prvom cemo staviti ime (name) ProveriIme a drugom ProveriLozinku.

Postavicemo i jedno dugme, nazvacemo ga LogInButton i isprogramiracemo.

function LogInButtonClick($sender, $params)
{
$con = mysql_connect("localhost", "", "");
if (!$con) {
die('Ne moze da se uspostavi veza ' . mysql_error());
}
$db_selected = mysql_select_db("Korisnici",$con);
$sql = "SELECT KorisnickoIme FROM TabelaKorisnici WHERE KorisnickoIme = '".$this->ProveriIme->Text."' AND Lozinka = '".$this->ProveriLozinku->Text."'";
$result = mysql_query($sql,$con);
if (mysql_num_rows($result) == 1)
{
echo 'ULOGOVAN';
mysql_close($con);
exit;

}
else
{
echo 'LOSI PODACI';
mysql_close($con);
exit;
}

 

Sta radi ovaj kod?

Dakle, prvo se konektujemo na bazu podataka u koju su korisnici, i sql upitom vrsimo proveru (filtriranje), da li se uneti korisnik nalazi u bazi.

Kad se filtriranje zavrsi proveravamo koliko ima rezultata, ako je pronadjen korisnik u bazi koji ima trazeno korisnicko ime i lozinku koja odgovara tom imenu onda u mom primeru stampam za rezultat komentar "Ulogovan" a ako su uneti podaci pogresni stampamo za rezultat "Losi podaci".

Naravno vi mozete da stavite nesto drugo, tipa stavite redirekciju na odredjen deo, ili sl. igrajte se malo ovim, eksperimentisite...

Mala napomena, posto je ovo ipak zamisljeno kao tekst za pocetnike,sto se tice SQL na ovako odradjen programski kod koji bi olako mogao da prodje, isti napad koji je pomenut nece proci ako aktivirate u php.ini fajlu recimo get_magic_quotes_gpc() koji ce automatski da se postara za prosledjene podatke preko POST, GET -a i COOKIES ili isto mozete da iskoristite funkcije addslashes() i stripslashes() ;) 

Comments (0) Posted to Generalna 01/23/2009 Edit

Dodavanje podataka u bazu pomocu Delphi for PHP-a

Da bi dodali podatke u bazu preko vaše web aplikacije možete da stavite na formu nekoliko editbox-a i labela (labele nisu neophodne ali zasigurno pomažu da se korisnije orijentiše koje polje (edit box) je za šta) i možemo da dodamo još jedno dugme koje ce služiti da pošalje vrednosti iz EditBoxa u bazu.

Ove komponente, Edit boxes, labels, buttons,… dodajete iz tool palete a nalaze se u delu standard. 

Ne zaboravite da u sekciji Name promenite svakoj Edit komponenti ime u ona koja cete da koristite, nije veliki problem ako ostavite i imena koja vam predlozi sam Delphi for PHP, ali kad vam se u projektu pojavi Edit1, Edit2, ..., Edit152 ajd upamtite koji je za sta :) Zato cemo da im promenimo imena (bar cu ja to da uradim) u IDEdit, FNameEdit, LNameEdit, AdressEdit, PhoneNumEdit.

I na kraju rasporedite komponente kako vam najviše odgovara.

Ja sam ih rasporedio kao na slici ispod…

Da bi poslali vrednosti iz edit box-a našoj bazi podataka,mi možemo da koristimo nekoliko metoda, ja koristim kombinaciju Delphi for PHP-a i MySQL-a (za sada :) ).

Da napomenem i to da pošto mi “kazemo” programu da doda one vrednosti koje je korisnik uneo u bazu, mi to saopstavamo tako što kliknemo na dugme koje smo stavili na formu, a to dugme mi isprogramiramo kodom. Da bi dosli do dela za unos koda mi jednostavno dok smo u design pogledu na formu mozemo da uradimo dvoklik na taster koji želimo da isprogramiramo i automatski ce Delphi for PHP da kreira funkciju koja ce se izvrsavati na naš klik mišem kad budemo pokrenuli aplikaciju.

Mi možemo da koristimo kod u ovom formatu da bi napunili bazu podacima:$this->YourDatabaseName->execute("INSERT INTO YourTableName (YourFieldName)VALUES ("SomeValue")");

U našem slucaju, pošto cemo da citamo vrednosti koje ce neki korisnik da unosi u polja na formi (u edit boxove),mi cemo da koristimo malo modifikovani kod od onog gore; razlika je u tome što onde direktno koristimo neke vrednosti za dodavanje u bazu a ovde citamo vrednosti koje korisnik unese u polja na formi da bi ih dodali u bazu; znaci nakon sto uradite dvoklik na dugme koje cemo da programiramo unesite ovaj kod u telo funkcije:

$this->dbMyDatabase1->execute("INSERTINTO sometable (ID,FirstName,LastName,Adress,PhoneNumber) VALUES ('".$this->IDEdit->Text."','".$this->FNameEdit->Text."','".$this->LNameEdit->Text."','".$this->AdressEdit->Text."','".$this->PhoneNumEdit->Text."')");Šta radi ovaj kod?

Ovaj kod znaci radi baš ono što sam naveo. Dakle, povežemo se prvo na bazu i izvršimo MySQL komandu.? Njome kažemo programu da redom u polja ID, FirstName, LastName, Adress i PhoneNumber smesti podatke (opet onim redom kojim su navedena imena polja koja popunjavamo) iz edit box-ova koji su na formi naše web aplikacije.

Mi ovde ne moramo da navodimo tip polja ni ništa jer ce Delphi for PHP automatski da ih prepozna i popuni na odgovarajuci nacin.

Šta nam preostaje sada? Pa sada nam preostaje da pokrenemo našu web aplikaciju i da vidimo da li radi ono što bi trebalo da radi. Kliknite na RUN i kada se pokrene aplikacija popunite bazu nekim vrednostima :D

Unesite neke vrednosti u edit box-ove i kliknite na dugme da bi poslali podatke u bazu.;)

Mala napomena!

Ako se secate, na samom pocetku kad smo definisali polja koja cemo imati u tabeli, stavili smo da imamo jedno polje primarnog kljuca, polje ID, sto znaci, podaci koje unostite trebalo bi da imaju razlicitu vrednost za id, tj. da vodite racuna da budu jedinstveni ;)

Comments (3) Posted to Generalna 01/23/2009 Edit

Rad sa bazama uz pomoc Delphi for PHP-a


U prethodnom postu mogli ste da vidite primer kako može da se kreira lakoi brzo neka baza podataka. Mi cemo sad da nastavimo sa ovde sa bazom koju smo kreirali na nacin opisan u prethodnom postu, a kasnije cu vam pokazati kako možete da kreirate ovu istu bazu i u “hodu”.

Najpre da vidimo i neke osnovne pojmove.Npr.

Šta je to baza podataka i cemu služi?Baza podataka služi da skladišti željene podatke, da te podatke organizuje po tabelama, i da ih zatim jednostavno i brzo dostavi takozvanom 'klijentu' koji traži te podatke.

Kako se to dostavljaju ti podaci ‘klijentu’ i šta je to uopšte?Dakle mi na jednoj strani imamo server (gde se cuvaju podaci) - i na drugoj strani klijent (kome se dostavljaju podaci).

Komunikacija izmedju klijenta i servera se odvija SQL jezikom tako sto klijent posalje query (upit) serveru - i server posalje klijentu odgovor - tj. zeljene informacije vezane za upit koji je dobio.

SQL se primenjuje skoro u svim programskim jezicima.Znaci svrha baza podataka je da brzo i efikasno mogu da se skladiste podaci i da lako može da se radi sa njima.

Pa, dakle da pocenemo mi konacno nešto konkretno…

Korak 2 – Povezivanje baze podataka sa vašom web aplikacijom. :)

Pokrenite vas Delphi for PHP; kad se program otvori docekace vas prijatno razvojno okruženje, koje ce vam na samom pocetku ponuditi par opcija za pocetak rada; mi cemo izabrati opciju new, da bi pokrenuli wizard, (preko kog cemo da napravimo našu web aplikaciju (praznu za sad)) kada se wizard otvori, automatski ce vam ponuditi da kreirate novu aplikaciju, tj. obeležice vam opciju application za kreiranje nove PHP aplikacije, vi samo kliknite na OK i aplikacija ce biti kreirana.

Naravno bice kreirana prazna aplikacija jer još ništa nismo poceli da programiramo, a docekace vas prozor kao na slici ispod. Na njemu mozete da razlikujete nekoliko glavnih celina: project manager, object inspector, tool palete, deo za meni i toolbar a u sredisnjem delu ce biti otvoren deo za formu vaše web aplikacije koji cete moci da menjate iz pogleda na formu u deo za code (design and code view) jednostavnim klikom na jezicak ispod forme u zavisnosti od toga šta vam treba.

Dakle, da pocnemo nešto konkretnije sad

Da bi mogli da koristimo bazu podataka koju smo u prethodnom delu kreirali moracemo da je registrujemo prvo. To cemo da uradimo tako što cemo da odemo na deo project manager i pronadjemo jezicak Data Explorer i tu kliknemo. I dobicemo u tom delu prozorcic kao na slici pored. Uocicete deo Database i odmah u okviru database dela i MySQL;desnim klikom na MySQL iz menija Database dobicete opciju Registar Database preko koje cemo da registrujemo našu bazu podataka i stavimo parametre koje ce da koristi naša web aplikacija da bi pristupala bazi.

I evo nam novog dijaloga koji se stvorio nakon što smo izabrali opciju register database. 

Šta ovde radimo?

Ovde mi unosimo ime za konekciju koju cemo da ostvarimo sa našom bazom podataka; ja sam stavio EXEMPLE jer se ipak radi o primeru.Pošto mi sve ovo sad isprobavamo na našoj masini (localhost-u) u tom delu cemo da stavimo localhost, a vi kad odlucite da radite ovo sa bazom koja je na netu stavicete naravno vaš host name; port cemo ostaviti standardni a user name i password takodje ce biti prazni jer nista nismo stavili ni pri instalaciji wamp servera koji nam omogucuje da sve ovo testiramo na nasem kompjuteru,ove parametre, opet kažem ako koristite bazu koja je na internetu treba da unesete vaš user name i password da bi vam vas host dozvolio da pristupite bazi podataka. ;)

Naravno da ne zaboravimo da unesemo i ime baze koju smo malopre kreirali, ako se secate moja baza se zvala “MyDatabase” pa cu zato to i da unesem ovde sada. Kada smo uneli sve trazene podatke preostaje nam samo da kliknemo na OK i baza ce biti registrovana ;)

Sada, pretpostavljam da zelite da prikazete na formu podatke koje cete da imate smestene u bazu. Kako to uraditi? Veoma lako.

Samo kliknite na ime tabele koju ste kreirali, prevucite je na formu i pustite taster miša. :)I Delphi for PHP ce automatski da kreira DBGrid (za prikaz podataka iz vaše (naše ?) baze), i Table, Database i Datasource componente koje nam omogucuju pristup i manipulaciju podacima u bazi. ;) Naravno sve ove komponente možete da postavite i podesite i rucno tako što cete ih pronaci u Data Access meniju sa Tool Palette, ali ja ipak mislim da je ovo mnogo lakši i brzi nacin sa prevlacenjem na formu

Sada kad ste ovo uradili možete da pokrenete aplikaciju klikom na taster RUN ili preko tastature na F9, ili preko menija Run->Run.Aplikacija ce biti startovana u vašem web browseru, ali ce DBGrid koji ce biti prikazan biti prazan. Zašto? Zato što jos nemamo nikakve podatke u bazi da bi bili prikazani.

Mora da napunimo bazu podataka prvo nekim podacima… 

U sledecem postu kako napuniti bazu nekim podacima.

To be continued...

Comments (0) Posted to Generalna 01/23/2009 Edit

Upoznavanje sa WAMP-om

Pozdrav, evo mene kao sto sam i obecao… Ovo je moj IT BrLOG i mesto na kome cu u buduce pisati nesto onako, neke male tutorijale, i neke korisne stvari vezane za IT, i programiranje uopste, ali na malo drugaciji nacin, onako, sto bi se reklo "narodskim" recima kako bi sto veci broj ljudi razumeo ... 

Najpre nesto o WAMP-u jer ce u nastavku biti deo vezan za Delphi for PHP

Pre nego sto krenemo na Delphi for PHP rekoh cisto da vam pokazem malo kako se radi sa WAMP-om tj. phpMyAdmin-om….

Inače da bi mogli da testiramo na našem kompjuteru kasnije web aplikacije koje ćemo da pravimo sa Delphi for PHP-om moramo da imamo podršku za PHP i MySQL (jer ćemo raditi i sa bazama kasnije). WAMP će nam to omogućiti jer sadrži PHP. MySQL, Apache u sebi…

Da bi instalirali WAMP server samo pratite veoma jednostavnu instalaciju i uputstva koja vam daje installer. Kad wamp server bude instaliran možete ga pronaći u sys tray-u (delu pored časovnika u donjem desnom uglu vašeg monitora). Pokrenućemo phpMyAdmin jednostavnim klikom na ikonicu wamp servera koji smo maločas instalirali i u jump meniju izabraćemo stavku phpMyAdmin i u browseru će se otvoriti prozor kao na slici.

Možemo da koristimo phpMyAdmin da kreiramo baze podataka, jednostavno ukucamo ime baze koju želimo da kreiramo u polje pod nazivom “Create new database” i kliknemo na dugmeCreate.

Sada kada smo kreirali bazu podataka, veoma lako možemo d napravimo i tabelu u toj bazi u koju cemo da smeštamo podatke koje unosimo. Jednostavno ćemo uneti ime tabele koju želimo da napravimo (u nasem slučaju neka stoji “SomeTable” za ime tabele) i unećemo broj polja koja ćemo da koristimo (ja sam stavio za naš ovaj tutorijal 5 – jedno za ID, jedno za FirstName (ime), jedno za LastName (prezime), jedno za Address (adresu) i jedno za PhoneNumber (broj telefona) recimo ;) ).

Nakon što unesemo podatke za ime i broj polja tabele koju pravimo jednostavno ćemo da kliknemo na GO taster ba bi kreirali tabelu “SomeTable” u bazi podataka pod imenom“MyDatabase”.
Sada, pošto smo odredili broj polja koji cemo da koristimo, da bi ih razlikovali moramo da unesemo i njihova imena, unećemo imena naših polja i tip za svako polje, ja ovde koristim u ovom primeru jedino za polje ID celobrojni tip podataka (INT) jer ćemo da koristimo brojeve u tom polju, a za sva ostala polja cemo da stavimo TEXT, jer ćemo da koristimo neke tekstualne podatke za vrednosti tih polja.

Takodje, vi možete da definišete i veličinu vrednosti koja će se unositi u datim poljima i još gomilu drugih podešavanja, ali posto je ovo osnovni tutorijal taj deo ćemo preskočiti, jer nam trenutno nije potreban.

  

Takodje možemo da definišemo i koje polje će nam biti polje primarnog ključa;u našem slučaju stavićemo da bude polje ID. Kada završite sa unosom imena polja i podešavanjem vezanim za tip polja i odredjivanje primarnog kljuca jednostavno kliknite na save .

 I čestitam, vaša baza sa tabelom i željenim poljima je uspesno kreirana. :)

Comments (0) Posted to Generalna 01/23/2009 Edit


Around here

Categories

Moji linkovi

Generalna

Feeds