Windows - VB szkript futtatása CGI szkriptként Webszervereken

forráskód letöltése
Visual Basic szkripteket írni nem nehéz, a Windows széleskörű támogatást nyújt hozzá, majd minden téren. Elérhető segítségükkel az operációs rendszer szinte összes zuga, hozzáférnek fájlok belsejéhez, másolások, átmozgatások és még sok egyéb művelet néhány sorral leprogramozható. Az ötlet adja magát: mi lenne, ha Webszervereken bevonnánk őket az oldalak tartalmának dinamikus előállításába? Súlyos biztonsági problémákba ütköznénk és nem működne a dolog. Hacsak fel nem készítjük a kiszolgálót arra, hogy CGI szkriptként értelmezze őket...
Cikkünkhöz mellékeltük az alábbi registy kulcsokat és értékeket létrehozó .REG exportállományt "VBSAsCGI.reg" néven. Futtatásával létrejönnek a tárgyalásra kerülő bejegyzések.
Ha a CGI szkriptet lehet futtatni, akkor a VB szkriptet miért nem? Amikor a kiszolgáló futtat egy szkriptet, akkor teszi azt a névtelen felhasználói fiókkal, ami egy Internetes eléréskor az IUSR_gépnév. A VB szkripteket nem névtelen futtatásra tervezték, hanem alapértelmezésben az aktuálisan bejelentkezett felhasználó nevével és jelszavával hitelesít. Próbáljuk ki:
Hozzunk létre egy X.VBS nevű fájl. Tartalma álljon egy sorból:
Wscript.Echo "Hello"
Futtassuk az Intézőben (Explorer) és megjeleníti a képernyőn a "Hello" szót.
Helyezzük el a fájlt egy Webhely gyökérkönyvtárában (általában \Inetpub\wwwRoot). Tegyük fel, hogy a kiszolgáló neve: SERVER, ekkor a következő módon lehet(ne) futtatni a szkriptet egy kliens gép Internet Explorer-ével
http://server/x.vbs
Azonban a "Hello" helyett ez jelenik meg:
CGI hiba
A megadott CGI alkalmazás a HTTP-fejlécek nem teljes készletét adta vissza. A visszaadott fejlécek:
Megoldás: konfiguráljuk az IIS-t, hogy a VB szkripteket ugyanúgy futtassa, mint a CGI szkripteket.
Indítsuk el a Felügyeleti eszközök > Internet szolgáltatáskezelő (Administrative Tools > Internet Services Manager) MMC konzolt. Kattintsunk a jobboldali egérgombbal az adott Webhelyre és válasszuk a "Tulajdonságok" ("Properties") menüt. Lépjünk a megjelenő ablak "Kezdőkönyvtár" ("Home Directory") oldalára. Itt lehet beállítani többek között a kiszolgáló által futtatandó alkalmazásokat. Nyomjuk le a "Konfiguráció" ("Configuration") gombot. Megjelenik egy másik ablak, nekünk itt az "Alkalmazások hozzárendelése" ("App Mappings") a fontos.
Ugyanúgy, mint a Windows-ban, a fájlkiterjesztésekhez végrehajtó programot lehet rendelni. Kattintsunk a "Hozzáadás" ("Add") gombra. Célunk, hogy a VBS kiterjesztéshez az IIS a parancssori CSCRIPT.EXE alkalmazást társítsa. A "Program" ("Executable") mezőbe írjuk be a CSCRIPT helyét, például:
c:\winnt\system32\cscript.exe %s %s
Ne felejtsük el a végéről a paramétereket. A "Kiterjesztés" ("Extension") mezőbe írjuk be:
.vbs
Az "OK" gombokkal lépjünk ki a beállító ablakokból.
Következő lépés a regisztrációs adatbázis szerkesztése. Meg kell adnunk a Windows Scripting Host (WSH) alapértelmezett beállításait: logo üzenet, kötegmódban való futtatás és időtúllépések letiltása. Indítsuk el a REGEDIT.EXE programot és a "HKEY_USERS\.DEFAULT\Software\Microsoft" helyen hozzuk létre az alábbi két kulcsot:
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Scripting Host]
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Scripting Host\Settings]
A "Settings" kulcson belül hozzuk létre a következő három duplaszó típust, egyaránt 0 értékkel:
"BatchMode"=dword:00000000
"DisplayLogo"=dword:00000000
"Timeout"=dword:00000000
Lépjünk ki a REGEDIT-ből.
Beállításaink utolsó lépéseként az IIS metaadatbázisában is el kell helyezni két értéket. Szükségünk lesz az IIS-ben lévő "ADSUTIL.VBS" szkriptre, ami alapesetben az "\Inetpub\AdminScripts" könyvtárban található. Ha nincs meg, akkor nem a teljes IIS van a gépünkön, ebben az esetben a Vezérlőpult > Programok telepítése/törlése (Control Panel > Add/Remove Programs) részével pótoljuk a hiányzó részt. Indítsunk el egy parancssori ablakot és írjuk be:
cscript adsutil.vbs SET w3svc/CreateCGIWithNewConsole "1"
cscript adsutil.vbs SET w3svc/CreateProcessAsUser "0"
Ezzel gyakorlatilag végeztünk is. Térjünk vissza az Internet Explorer-hez és próbáljuk meg ismét futtatni az X.VBS szkriptünket. Az előbbi hibaüzenet helyett megjelenik a "Hello" felirat. Ettől kezdve semmi akadálya, hogy megkezdjük az Internetes programozást Visual Basic szkriptek segítségével.