A CGI (Common Gateway Interface) egy szabványosított protokoll, amely lehetővé teszi a webes szerverek számára, hogy dinamikus tartalmat szolgáltassanak különböző programok futtatásával. Alapvetően egy interfészt biztosít a szerveren futó alkalmazások és a kliens (például egy böngésző) között.
Mire jó a CGI alkalmazás a szerveren?
-
Dinamikus tartalom szolgáltatása: A CGI segítségével a szerver olyan dinamikus weboldalakat tud létrehozni, amelyek különböző adatokat mutatnak a felhasználó kérésére, például űrlapok kitöltése után. A CGI programok választható programozási nyelvekben írhatók, mint például Perl, Python, PHP, vagy akár C.
-
Adatfeldolgozás: CGI alkalmazások képesek űrlapadatok feldolgozására. Például, amikor egy felhasználó kitölt egy webes űrlapot, a beküldött adatokat a CGI alkalmazás dolgozza fel, majd a választ visszaküldi a böngészőnek.
-
Adatbázis-kapcsolat: CGI programok kapcsolódhatnak adatbázisokhoz, és lehetővé teszik az adatbázisban tárolt adatok lekérését és megjelenítését a felhasználó számára.
-
Platformfüggetlenség: Mivel a CGI egy szabványos interfész, bármely platformon használható, amely támogatja a webes kiszolgálást (például Apache, Nginx), és támogatja a megfelelő programozási nyelveket.
-
Eseménykezelés: CGI segítségével olyan alkalmazásokat is létre lehet hozni, amelyek valós idejű eseményeket kezelnek, például chat alkalmazásokat vagy adatfolyamok frissítését.
Hogyan működik?
Amikor egy felhasználó egy dinamikus oldalra vonatkozó kérést küld, a szerver elindít egy CGI programot, amely a kért adatokat feldolgozza, és eredményül HTML-kódot vagy más adatokat küld vissza a felhasználónak. Például, amikor egy webes űrlapot elküldesz, a CGI feldolgozza az adatokat, majd eredményként válaszoldalt hoz létre.
Előnyök:
- Optimális választás lehet közepes forgalmú weboldalakhoz, valamint osztott webszerverhez.
- Lehetőség van a PHP processzt a felhasználó nevében futtatni, így monitorozva és limitálva erőforrás használatát
- Lehetőség van vhostonként külön php.ini használatára is
- Nem jelentkezik a fájl jogokkal kapcsolatos probléma. A PHP minden fájlt tud írni, olvasni
Hátrányok:
- Teljesítményproblémák: Mivel a CGI programok minden egyes kéréshez külön-külön elindulnak (párhuzamosan), ez nagy terhelést jelenthet a szerver számára.
- Biztonsági kovkázatok: Ha nem megfelelően írják meg, a CGI alkalmazások biztonsági rést jelenthetnek, például az input sanitization hiánya sebezhetőséget okozhat.
- Nem lehet PHP szabályokat beállítani a .htaccess fájlban
- Kevésbé biztonságos mint a SuPHP
- Nagy számú párhuzamos PHP lekérések nagy terhelést okozhatnak a szerveren.