István mai cikkéből megtudhatjuk, hogyan szabályozhatjuk a hozzáférést adatbázisunkhoz!
Sokan alkalmaznak PHP scripteket, hogy adatbázisukat saját webes felületen is elérjék. Az ilyen interfészeket természetesen védeni kell, ezt megtehetjük a hálózat megfelelő konfigurációjával, htaccess, vagy adatbázis védelemmel.
Utóbbi két lehetőség azért szimpatikus, mert bárhonnan elérhetővé tehetjük az alkalmazásunkat, ugyanakkor a legnagyobb kockázatot is ez jelenti.
Ilyen esetben nagy hangsúlyt kell fektetni a bejelentkezés biztonságosságára, akár többlépcsős autentikációt is alkalmazhatunk.
Jó példa erre az OTP Direkt szolgáltatása, ahol a bejelentkezéshez 3 adatra is szükség van. (Számlaszám, azonosító és jelszó.)
Nézzük át röviden a fenti három hozzáférési lehetőséget!
A hálózat megfelelő konfigurálása alatt azt értjük, hogy az interfészt csak belső hálózatról, és bizonyos esetben csak adott IP című gépről érhetjük el.
Erre Linuxos környezetben az iptables
paranccsal létrehozott úgynevezett IP szűrő láncok szolgálnak. Erről itt olvashat részletesen: http://ipset.netfilter.org/iptables.man.html
A másik lehetőség a htaccess-htpasswd védelem.
Ezzel külső hálózatról is elérjük a scriptünket, de a szerver csak akkor enged be, ha hitelesített módon (felhasználónév-jelszó párossal) lépünk be. Egy általános htaccess fájl így néz ki:
AuthName "SiteName Administration"
AuthUserFile /home/sitename.com/.htpasswd
AuthType basic
Require valid-user
Order deny,allow
Deny from all
A kód, az alábbi képen látható bejelentkező felülethez hasonlót eredményez. (Erről itt olvashat bővebben:
http://evolt.org/ultimate_htaccess_examples)
A módszer gyengesége az egylépcsős bejelentkezés, és a felhasználók menedzselésének hiánya. A legkézenfekvőbb módszer az adatbázison keresztüli bejelentkezés.
Tehát létrehozunk az adatbázison belül egy külön táblát, amiben a felhasználókat tároljuk, az ő jelszavukat, és esetleg valami egyéb adatot, ami megvalósítja a többlépcsős bejelentkezés.
Még egy fontos tulajdonságot el kell raktároznunk, méghozzá a felhasználó jogosultságát. Ezt jellemzően egyetlen számmal reprezentálni tudjuk, például: 0 – főadminisztrátor, 1 – adminisztrátor, 2 – felhasználó, 3 – vendég, stb…
A jogosultságokra pont azért van szükség, hogy meg tudjuk határozni, mit láthat, és módosíthat a belépett felhasználó.
Most nézzünk egy egyszerű programrészletet, ami az adminisztrátornak 3 lehetőséget ad (összes adat listázása, tábla törlése, adatbázis törlése), egyszerű felhasználónak csak az összes adat listázása lehetőséget. (Az adminisztrátor jogosultsági szintje 0, a felhasználóé 1, és ezek a session tömb, level értékében vannak elraktározva.)
session_start();
if($_SESSION[’level’]==0)print ’
<input type=”submit” name=”osszes_adat” value=”Listázás”>
<br>
<input type=”submit” name=”tabla_torles” value=”Tábla törlése”>
<br>
<input type=”submit” name=”db_torles” value=”Adatbázis törlése”>
<br>
’;
elseif($_SESSION[’level’]==1)print ’
<input type=”submit” name=”osszes_adat” value=”Listázás”>
<br>
’;
else print ’Ön nincs bejelentkezve’;
Ilyen esetben SQL parancsokat is lekorlátozhatunk, ha készítünk parancsbeviteli mezőt. Az adott jogosultsági szinten meghatározhatjuk a kiadható parancsok neveit.
Célszerű ezeket egy lokális tömbben tárolni, és megvizsgálni, hogy a kiadott parancs szerepel-e ebben a tömbben. Természetesen a beviteli mezőben több szó is szerepel majd, ezeket érdemes szétvágni a szóközök mentén az explode () függvénnyel. Ez a függvény egy újabb lokális tömböt eredményez, amelynek valamelyik eleme – általában a 0. – a kiadott parancs neve lesz.
Ezt kell összehasonlítani a korábban deklarált lokális tömbbel. Amennyiben a parancs szerepel benne, végrehajtjuk, ha nem, akkor hibaüzenettel térünk vissza.
Ha meg akarjuk könnyíteni az adatbázisunk használatát, érdemes saját kezelőfelületet készíteni, de nem lehet elégszer hangsúlyozni, hogy ennek biztonságos eléréséről gondoskodnunk kell!
Jó gyakorlást kívánunk!
Legyen profi a php webprogramozásban, dolgozzon képzett PHP-s szakemberként, akár külföldre is!
Jelentkezzen az augusztus végén induló Akkreditált PHP-Webprogramozó Mester, és Akkreidtált Web Artist tanfolyamainkra, és legyen profi a webprogramozásban!
A képzések jellemzői:
- oktatás heti egy alkalommal, 4 órában
- piacképes, gyakorlati tudás
- akkreditált képzések kétnyelvű bizonyítvánnyal (angol-magyar)
- céges álláslehetőség a képzés végén releváns szakterületen
- részletfizetési lehetőség
- ajándék Pendrive!
- kiscsoportos, gyakorlat orientált képzés
Jelentkezzen az induló php-s csoportokba legkésőbb augusztus 27-ig!
Érdeklődjön, jelentkezzen bármelyik elérhetőségünkön!
További, augusztus végén induló kiscsoportos informatika tanfolyamainkat itt találja!
Szerezzen használható, piacképes informatika szakmát, és dolgozzon is az adott szakterületen!
Várjuk szeretettel!
NetlogiC School
Gyakorlat orientált informatika oktatás rugalmas időbeosztással!
www.netlogi-c.net