jegyzet a fejlett webes technológiák elõadáshoz a sysdata...

243
Jegyzet a Fejlett Webes technológiák el˝ oadáshoz A Sysdata támogatásával Bilicki Vilmos 2002. december 19.

Upload: others

Post on 19-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

  • Jegyzet a Fejlett Webes technológiákelőadáshoz

    A Sysdata támogatásával

    Bilicki Vilmos

    2002. december 19.

  • 2

  • Tartalomjegyzék

    1. Előszó 7

    I. A World Wide Web alapjai 9

    2. A HTTP protokoll 132.1 A kérés üzenet . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 A válasz üzenet . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Biztonság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    2.3.1 Basic Authentication . . . . . . . . . . . . . . . . . . . 212.3.2 Digest Access Authentication . . . . . . . . . . . . . . 22

    3. Az SHTTP protokoll 27

    4. A TLS protokoll 29

    5. A HTML nyelv 315.1 A html dokumentum általános felépítése . . . . . . . . . . . 315.2 Logikai felépítést definiáló elemek . . . . . . . . . . . . . . . 345.3 Szöveg formázása . . . . . . . . . . . . . . . . . . . . . . . . . 355.4 Táblázatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.5 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.6 Keretek (Frames) . . . . . . . . . . . . . . . . . . . . . . . . . . 435.7 Objektumok, Képek, appletek . . . . . . . . . . . . . . . . . . 445.8 Űrlapok (Forms) . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    6. CSS 536.1 A CSS nyelv szabályai . . . . . . . . . . . . . . . . . . . . . . 546.2 A CSS definiálása . . . . . . . . . . . . . . . . . . . . . . . . . 556.3 Az egyes elemek tulajdonságai . . . . . . . . . . . . . . . . . 56

    7. Az XML nyelv 617.1 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617.2 XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    3

  • 4 TARTALOMJEGYZÉK

    8. WEBDAV 758.1 Metódusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758.2 Zárolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768.3 Paraméterek továbbítása . . . . . . . . . . . . . . . . . . . . . 76

    9. WAP 799.1 WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    9.1.1 A WAP architektúra . . . . . . . . . . . . . . . . . . . 809.2 WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    II. Dinamikus tartalom 91

    10. Bevezető 93

    11. Szkript nyelvek 9511.1 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    11.1.1 Alprogramok . . . . . . . . . . . . . . . . . . . . . . . 10211.1.2 Modulok . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.1.3 Objektum Orientált Programozás Perl-ben . . . . . . 104

    11.2 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10711.2.1 Bevezető . . . . . . . . . . . . . . . . . . . . . . . . . . 10711.2.2 Változók . . . . . . . . . . . . . . . . . . . . . . . . . . 10711.2.3 Vezérlő szerkezetek . . . . . . . . . . . . . . . . . . . . 11111.2.4 Fájlkezelés . . . . . . . . . . . . . . . . . . . . . . . . . 11211.2.5 Függvények . . . . . . . . . . . . . . . . . . . . . . . . 11211.2.6 Modulok, Csomagok, Névterek . . . . . . . . . . . . . 11311.2.7 Objektumorientált Programozás Python-ban . . . . . 114

    12. CGI 11712.1 A CGI alapvető elemei . . . . . . . . . . . . . . . . . . . . . . 119

    13. Kliens oldali programozás 12113.1 Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    13.1.1 Változók . . . . . . . . . . . . . . . . . . . . . . . . . . 12313.1.2 Kifejezések . . . . . . . . . . . . . . . . . . . . . . . . . 12413.1.3 Feltételes utasítások, ciklusok . . . . . . . . . . . . . . 12413.1.4 Függvények . . . . . . . . . . . . . . . . . . . . . . . . 12613.1.5 Objektumok . . . . . . . . . . . . . . . . . . . . . . . . 126

    13.2 Visual Basic Script . . . . . . . . . . . . . . . . . . . . . . . . . 13513.2.1 Változók . . . . . . . . . . . . . . . . . . . . . . . . . . 13513.2.2 Operátorok . . . . . . . . . . . . . . . . . . . . . . . . 13613.2.3 Feltétleles utasítások, ciklusok . . . . . . . . . . . . . 13713.2.4 Függvények . . . . . . . . . . . . . . . . . . . . . . . . 13813.2.5 Objektumok . . . . . . . . . . . . . . . . . . . . . . . . 141

  • TARTALOMJEGYZÉK 5

    13.2.6 ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    14. 3 rétegű architektúrák 143

    15. Java 14715.1 Java Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    15.1.1 Inicializálás, Futás, Kilépés . . . . . . . . . . . . . . . 15015.1.2 Rajzolás, Eseménykezelés . . . . . . . . . . . . . . . . 152

    15.2 JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.1 Rétegek . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.2 A fontosabb JDBC objektumok használata . . . . . . 15515.2.3 Tranzakció kezelés . . . . . . . . . . . . . . . . . . . . 158

    15.3 Java Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16015.3.1 A Servlet architektúra . . . . . . . . . . . . . . . . . . . 16115.3.2 Együttműködés a kliensekkel . . . . . . . . . . . . . . 16215.3.3 A Servlet életciklusa . . . . . . . . . . . . . . . . . . . 16415.3.4 A kliens állapot elmentése . . . . . . . . . . . . . . . . 16615.3.5 Információ megosztás Servlet-ek között . . . . . . . . 170

    16. Szerver oldali programozás 17516.1 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

    16.1.1 Alapvető szintaxis . . . . . . . . . . . . . . . . . . . . 17616.1.2 Változók . . . . . . . . . . . . . . . . . . . . . . . . . . 17816.1.3 Konstansok . . . . . . . . . . . . . . . . . . . . . . . . 18016.1.4 Operátorok . . . . . . . . . . . . . . . . . . . . . . . . 18016.1.5 Vezérlési szerkezetek . . . . . . . . . . . . . . . . . . . 18116.1.6 Függvények . . . . . . . . . . . . . . . . . . . . . . . . 18316.1.7 Osztályok, objektumok . . . . . . . . . . . . . . . . . 18416.1.8 Együttműködés Webszerverrel . . . . . . . . . . . . . 18616.1.9 Együttműködés adatbázisokkal . . . . . . . . . . . . . 186

    16.2 ASP (Active Server Pages) . . . . . . . . . . . . . . . . . . . . . 18816.2.1 Az Objektum modell . . . . . . . . . . . . . . . . . . . 18916.2.2 Adatkezelés, ADO (ActiveX Data Objects) . . . . . . . 19716.2.3 Global.asa fájl . . . . . . . . . . . . . . . . . . . . . . . 201

    16.3 JSP(Java Server Pages) . . . . . . . . . . . . . . . . . . . . . . . 20316.3.1 A JSP áttekintése . . . . . . . . . . . . . . . . . . . . . 20316.3.2 Dinamikus tartalom generálása . . . . . . . . . . . . . 20416.3.3 Beépített Objektumok . . . . . . . . . . . . . . . . . . 205

    III. Web szerverek 207

    17. Bevezető 209

  • 6 TARTALOMJEGYZÉK

    18. Apache 21118.1 Szabványok támogatása . . . . . . . . . . . . . . . . . . . . . 21118.2 Környezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21118.3 Adminisztrálás . . . . . . . . . . . . . . . . . . . . . . . . . . 21218.4 Események mentése (log) . . . . . . . . . . . . . . . . . . . . . 21218.5 Biztonság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21218.6 Process-ek szálak kezelése . . . . . . . . . . . . . . . . . . . . 213

    19. iPlanet Web szerver 21519.1 iPlanet Web Server Architektúra . . . . . . . . . . . . . . . . . 216

    20. Servlet Engine-k 21920.1 Bevezető . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22020.2 Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22120.3 JRUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    IV. Alkalmazás szerverek 223

    21. Bevezető 225

    22. J2eesdk 22722.1 Referencia megvalósítás . . . . . . . . . . . . . . . . . . . . . 22722.2 Adatbázis elérés . . . . . . . . . . . . . . . . . . . . . . . . . . 22722.3 J2EE API-k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22822.4 Eszközök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

    23. JRun 231

    24. Webogic 23324.1 T-motor (T-engine) . . . . . . . . . . . . . . . . . . . . . . . . . 23324.2 J-motor (J-engine) . . . . . . . . . . . . . . . . . . . . . . . . . 234

    25. iPlanet 23525.1 Jellemzők áttekintése . . . . . . . . . . . . . . . . . . . . . . . 235

    25.1.1 Alap szolgáltátsok . . . . . . . . . . . . . . . . . . . . 23525.1.2 Vállalti és üzlet-üzlet intgrálási szolgáltatások . . . . 23625.1.3 Process menedzselő rendszer . . . . . . . . . . . . . . 23625.1.4 Business Process fejlesztő környezet . . . . . . . . . . . 23725.1.5 J2EE fejlesztő környezet . . . . . . . . . . . . . . . . . 23725.1.6 Integrálás az iPlanet Directory szerverrel és a iPlanet

    Web szerverrel . . . . . . . . . . . . . . . . . . . . . . . 23725.1.7 Támogatott platformok . . . . . . . . . . . . . . . . . 237

  • 1. fejezet

    Előszó

    Néhány szó a WEB, Webes technológia történelméről: A tudományok fej-lődésével egyre nagyobb igény mutatkozott a dokumentumok egységes,szakszerű, átlátható tárolására. A felhalmozódott tudásmennyiség kezelé-sére egyre kevésbé volt alkalmazható a hagyományos papír alapú megol-dás. Vannevar Bush 1945-ben egy nevű tudáskezelő rendszert írt le a AsWe May Think [1] című cikkében. Theodor Holm Nelson [2] szintén meg-álmodta az alkalmas dokumentumkezelő rendszert. 1965-ben Ő használtaelőször a hypertext kifejezést , melynek definíciója:

    A hypertext az információ egy olyan összekötött információscsomópontokból álló hálózatának megjelenítése melyekenaz olvasó tetszőlegesen tud közlekedni, nem lineáris módonis.

    A napjainkban is használt HTML(HyperText Markup Language)(5) nyelvelső verzióját a CERN-ben dolgozó Tim Berners-Lee és Robert Caillau dol-gozta ki. Az információ tárolásra, lekérésre a már jól bevált kliens-szervermodellt használták fel. Megjelentek az első Web szerverek és a hozzájuktartozó Web kliensek. Az átvitelről a HTTP (2) protokoll gondoskodott.

    Miért érdekes számunkra a téma? Miért olyan népszerű napjainkban aWebes technológia? Három kulcsszóval jellemezhetjük:

    • elosztott rendszerek (skálázhatóság)

    • vékony kliens technológia (minimális adminisztráció)

    • platform független (heterogén rendszerek együttműködése, nem va-gyunk egyetlen céghez sem kötve)

    7

  • 8 FEJEZET 1. ELŐSZÓ

    Napjainkban kihasználva a helyi számítógépes hálózat adta lehetősé-geket a legtöbb alkalmazás igyekszik a többivel együttműködni (kisebb,nagyobb sikerrel . . . ). Ezen együttműködés a legtöbb esetben kliens szer-ver alapú. Komoly alkalmazás rendszerek alakulhatnak ki. Pl.: Egy cso-portmunka támogató keretrendszer a felhasználók kommunikációján kí-vül tartlamazhatja az üzleti logikát, feladat elosztást . . . stb. Lehetővé vá-lik a felhasználók együttműködése, mobilitása, központi adminisztrációja.Egyre komplexebb feladatok megoldása válik lehetővé elosztott egymássalegyüttműködő renszerek segítségével. A cégek működésük paramétereitfolyamatosan nyomon követhetik, optimalizálhatják (ERM, CRM rendsze-rek). Ezen tulajdonságok jelentik a mozgatóerejét a webesítés nevű folya-matnak melynek keretében egyre több feladat megoldása kerül át webesrendszerek hatókörébe. Ma ezen trend felfutó ágában vagyunk. Egy má-sik komoly terület mely nem különíthető el teljes mértékben az előzőtől aze-commerce, e-business. Olyan alkalmazások, szabványok, technológiák van-nak kialakulóban melyek segítségével a vállalatok viszonylag biztonságo-san, automatikusan tudnak üzleti tranzakciókat kezelni. (Pl.: egy autógyárszámítógépes rendszere automatikusan megrendeli a szükséges alkatrésze-ket a beszálító rendszerétől mely további tranzakciókat kezdeményezhet.Itt megemlíthetjük az onile banking-et is, melynek keretében banki tranzak-ciókat kezelhetünk webes rendszereken keresztül.)

    A jegyzet ezen hatalmas területet próbálja áttekinteni négy részre osztvaazt:

    • Az első részében megismerkedünk a Web alapjaival. Áttekintjük egy-részt az átviteli protokollokat, másrészt megismerkedünk a tartalommegjelenítés módszereivel (HTML(5),XML(7), . . . ). Itt ismerkedünkmeg a mobil világot és az Internetet összekapcsoló WAP(9) környe-zettel is.

    • A második részben, mely a jegyzet illetve az előadás domináns részétképezi áttekintjük a ma hsznált legfontosabb technológiákat melyeksegítségével adatbázisokból, vagy más adatforrásokból dinamikus afelhasználó igényei szerint változó oldalakat állíthatunk elő.

    • A harmadik rész már teljesen a szerver oldallal foglalkozik. Átte-kintjük benne a web szerverek legfontosabb jellezőit működésüket ésnéhány népszerűbb webszervert.

    • A negyedik rész önmagában is több jegyzetet lefedhetne. Itt ismerke-dünk meg az alkalmazás szerverekkel melyek biztonságos, jól mene-dzselhető környezetet nyújtanak a szerver oldali programok futtatá-sához.

  • I. rész

    A World Wide Web alapjai

    9

  • Bevezető

    Mielőtt belemerülnénk a részletekbe érdemes áttekinteni egy webes rend-szer felépítését, működését. Az 1.1 ábrán látható egyszerűsített vázlaton,az adatforgalomra helyeztük a hangsúlyt. Mint említettük a viszony kliensszerver alapú. A kliens kér egy weboldalt a szervertől, mely szerencsésesetben visszaküldi azt. A rendszer természetesen nem ilyen egyszerű. Az

    1.1. ábra. WEB vertikális metszet

    átvitel folyamán sok mindenről kell gondoskodni. A különböző rétegekezen feladatokat megoldására lettek kifejlesztve. Átviteli protokollként ajelenleg leginkább elterjedt TCP/IP protokollt ábrázoltuk, azonban bármelytranszparens átvitelt biztosító protokoll megfelel erre a célra. A másodikréteg (TLS (4)) biztosítja az átvitel biztonságát, megbízhatóságát, titkosságát(amennyiben az alkalmazás igényli ezt. Egy hír portálnál nincs különösebbigény az adatok biztonsága, titkossága iránt, egy online banki tranzakció-nál viszont nélkülözhetetlen.). A harmadik rétegként szerepelő HTTP (2)minden kapcsolatnál jelen van, gondoskodik a kliens a szerver valamintaz esetleges proxy szerverek közötti kommunikációról. A kommunikáció acélja a kliens által kért HTML (5), vagy XML (7) dokumentumok átvitele. AzXML réteg feladata az adatok általános leírása, az adatok megjelenítésérőlnem tartalmaz információt. Különálló alkalmazások közötti adatcserére,illetve olyan esetkben szokták alkalmazni amikor a felhasználó több for-mában szeretné viszontlátni az adatokat (pl.: mobil készülék, pdf, html,. . . stb.) A HTML (5) réteg szerepe az adatok megfelelő megjelenítése. ACSS (6) nyelv segítségével megjelenítési stílusokat tudunk definiálni. Aszerver oldlal tárolhat statikus HTML fájlokat, ekkor a beérkező kérésre a

    11

  • 12

    megfelelő fájl tartalmát küldi vissza. Gyakorabban találkozunk dinami-kus tartalommal, ekkor a szerver adatbázisból, vagy más forrásból a kéréshatására állítja elő a HTML oldal tartalmát. A jegyzet első részében azátvitel részleteivel valamint az átviendő adat megjelenítésének leírásávalfoglalkozunk.

  • 2. fejezet

    A HTTP protokoll

    A HTTP (Hyper Text Transport Protocol) egy alkalmazás szintű protokoll azelosztott, egymással együttműködő hypermédia rendszerek számára, melyátviteli protokollként a TCP/IP protokollt alkalmazza. (Használhat mást is,a követelmény csak az, hogy az átvitel transzparens legyen). Mint a legtöbbhálózati protokoll, a HTTP protokoll is a kliens szerver modellt használja.(AHTTP kliens küld egy kérést a HTTP szerver számára, az válaszol és vissza-küld egy válasz üzenetet, mely általában tartalmazza a kért információt.)A protokoll állapotmentes, tehát nem nyújt semmilyen információt arról,hogy az adott kliens mikor, melyik oldalt kérte le (a szerver persze nyo-mon követheti ezt, de a HTTP protokoll nem nyújt ebben segítséget). A

    2.1. ábra. A Proxy szerver helyzete

    felhasználók számának növekedésével arányosan nő a hálózat terhelése. Aterhelés elosztásának, csökkentésének egyik módja, hogy a kívánt tartalmat

    13

  • 14 FEJEZET 2. A HTTP PROTOKOLL

    közel visszük a felhasználókhoz. Erre szolgál a proxy szerver, mely segít-ségével a kérések egy részét le tudjuk kezelni a helyszínen, nem terhelve anyilvános hálózatot. A helyi felhasználók webes forgalma is rajta keresztülzajlik. Ezt a forgalmat (a lekért weboldalakat) letárolja és a legközelebbikéréskor a tárolt oldalt küldi vissza a felhasználónak. A HTTP/1.1 [3]-esszabvány igen részletesen tárgyalja a proxy szerverek feladatát, működé-sét. Igen sok beállítási lehetőséget biztosít a kliens és a szerver számáraegyaránt, hogy az útba eső proxy szerverek működését befolyásolya. Fon-tos, például egy dinamikusan változó oldalnál, hogy a proxy folyamatosannyomon kövesse a változásokat. Egy tőzsdei jelentéseket tartalmazó oldal-nál például, megengedhetetlen, hogy a kliens ne a legaktuálisabb tartalmatkapja meg, míg egy újságnál, vagy a tőzsde oldal díszítő grafikai elemeinélnem fontos minden alkalommal az eredetit letölteni. Egy kapcsolat tehátigen sok kiegészítő paraméterrel jellemezhető, melyeket a felek először akapcsolat felépítésénél állítanak be. Ilyen paraméter például, a használtprotokoll verziószáma. Mindig a használható legmagasabb verziószámúprotokollok közül választják ki a legkisebb verziószámút. A verziószámbaaz útban lévő proxy szerverek nem szólnak bele. Ha az átviteli protokoll ver-ziószáma magasabb, mint az útba eső proxy szervereké, akkor azok átjátszóüzemmódban működnek. Miután az üzenetcsere megtörtént a HTTP/1.1-es[3] ajánlás szerint nem bontják le a kapcsolatot. A kapcsolat fenntartásiideje implementáció függő. A HTTP szerver általában a 80-as TCP portonfogadja a kéréseket.

    A kliens az igényelt tartalmat az ún. URI (Universal Resource Identifier)segítségével címezi meg, mely egy absztrakt vagy fizikai erőforrás megcí-mezésére alkalmas karatersorozat. A pontos felépítését az rfc2396-os [4]IETF[5] ajánlás írja le, melyben a következő felépítés szerepel:

    :

    Az URI leírása nem rögzíti ugyan a protokoll specifikus rész felépítését,azonban a protokollok egy részénél a következő felépítést használják:

    ://?

    A címben csak US-ASCII kódolású karakterek egy halmazát használhat-juk, melyben az angol abc kicsi és nagy betűi szerepelnek a számokkalkiegészítve. Amennyiben olyan karaktert szeretnénk használni, ami nemszerepel az említett karakterkészletben, (és nem foglalt) a ’%’ jellel kezdődő

  • 2.1. A KÉRÉS ÜZENET 15

    ASCII kódjának hexadecimális értékével helyettesíthetjük. Például a szó-köz karakter " " helyett az "%20" karaktersorozat. Foglalt karaktereket semhasználhatunk az egyes részekben.

    (";","/","?",":","@","&","=","+","$",",")

    A foglalt karaktereket többnyire elválasztó karakterként használjuk azegyes címrészek között. Az azonosítás részen a felhasználó login nevehelyezkedhet el egy ’@’ jellel lezárva. Egyes protokollok megengedik ajelszó átvitelét is. Itt a név után írt ’:’ karakter után írhatjuk a jelszavunkat.Például:

    ftp://felhasznalo:[email protected]

    A HTTP specifikus címzési sémát URL (Universal Resource Locator)-nek ne-vezzük. Felépítése a következő:

    http : // host [ : ] [ port ] [ abszolút_útvonal [ ? query ]]

    A szögletes zárójelben levő opcionálisak. Az abszolút útvonal leírja azelérési útvonalat a gyökér könyvtártól a keresett állományig. Relatív út-vonalnak nevezzük azt a címzési módot, amikor a kiindulási pont nem agyökér könyvtár. Például, ha szeretnénk egy fájlban definiálni az ugyana-zon a gépen lévő másik fájl elérési útvonalát.

    A HTTP üzeneteknek két típusa van: kérés (request) és válasz (respnose).Mindkét üzenet a következő elemeket tartalmazza:

    • kezdő sor

    • fejléc sorok

    • üres sor

    • az üzenet tartalma

    2.1. A kérés üzenet

    A kapcsolat-felépítés első lépése a kérés üzenet. A HTTP protokollt egy-szerű protokollnak tervezték ugyanis hibamentes szolgáltatásra épül. Ezértcsak 8 kérés függvénnyel rendelkezik:

  • 16 FEJEZET 2. A HTTP PROTOKOLL

    2.2. ábra. Üzenetcsere

    1. GET

    2. OPTIONS

    3. POST

    4. HEAD

    5. PUT

    6. DELETE

    7. TRACE

    8. CONNECT

    Íme néhány példa a leggyakrabban használt kérés függvényekre. Példáink-ban a kiválasztott Web szerver 80-as portjára lépünk be telnet segítségével.Belépés után kiadjuk a kívánt parancsokat. A kérés üzenetek:

    GET – A GET függvény segítségével lehet lekérni egy URI segítségévelmegcímezett adathalmazt a szerverről. Pl.:

    GET / HTTP/1.1Host: sirius.cab.u-szeged.hu

    HTTP/1.1 200 OKDate: Thu, 13 Dec 2001 16:55:37 GMTServer: Apache/1.3.20 (Unix) PHP/4.0.6Transfer-Encoding: chunkedContent-Type: text/html

    8a0

    Irinyi Kabinet

  • 2.1. A KÉRÉS ÜZENET 17

    vlink="#0000b0" background="/icons/hatter.gif" >...

    Az első sorban lekértük a szerverről a ’/’ jellel azonosított gyökérkönyvtárat és megadtuk az általunk használható legmagasabb verzi-ószámú protokollt (HTTP/1.1). A második sorban megadtuk a szervercímét. Ezután az enter billentyű lenyomásával átküldtünk egy sorvégkarakter párt. A szerver a fent látható választ küldte.

    OPTIONS– Az OPTIONS függvény segítségével információt kérhetünk aszerver oldalon rendelkezésre álló kommunikációs paraméterekről,melyek általában egy adott erőforrásra érvényesek. Az OPTIONSparancs után meg kell adnunk az erőforrás URI azonosítóját. Ha aszerver egésze érdekel bennünket, akkor csillagot írunk ide. Pl:

    OPTIONS * HTTP/1.1Host: sirius.cab.u-szeged.hu

    HTTP/1.1 200 OKDate: Mon, 17 Dec 2001 08:22:24 GMTServer: Apache/1.3.20 (Unix) PHP/4.0.6Content-Length: 0Allow: GET, HEAD, OPTIONS, TRACE

    A válaszban, a fejléc sorban megkaptuk azoknak a függvényekneka listáját, melyeket a gyökér oldalon használhatunk. Lássunk egypéldát egy dinamikus oldal paramétereinek. lekérdezésére.

    OPTIONS /cgi-bin/szotarE HTTP/1.1Host: sirius.cab.u-szeged.hu

    HTTP/1.1 200 OKDate: Mon, 17 Dec 2001 10:05:54 GMTServer: Apache/1.3.20 (Unix) PHP/4.0.6Content-Length: 0Allow: GET, HEAD, POST, OPTIONS, TRACE

    Megfigyelhetjük, hogy az adott oldal támogatja a POST függvényt is.

    HEAD– A HEAD függvény segítségével a válaszban csak a header résztkérjük a szervertől. Ez akkor érdekes, ha kíváncsiak vagyunk arra,hogy változott-e az oldal az utolsó letöltés óta.

    HEAD /teszt/ HTTP/1.1Host: wilma.cab.u-szeged.hu

    HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Cache-Control: max-age=86400Expires: Tue, 18 Dec 2001 14:47:33 GMT

  • 18 FEJEZET 2. A HTTP PROTOKOLL

    Content-Location: http://wilma.cab.u-szeged.hu/teszt/index.htmlDate: Mon, 17 Dec 2001 14:47:33 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Mon, 17 Dec 2001 14:03:32 GMTETag: "fc50cd9c387c11:88e"Content-Length: 83

    POST – Mint az URI leírásában láthattuk, a GET üzenet segítségével istudunk a szerver oldal számára paramétereket átadni a ’?’-jel utánirészen. A POST üzenet segítségével azonban úgy küldhetünk ada-tokat a szerver számára, hogy nem az URI-t használjuk az átviendőadat számára, hanem a fejléc sorok után megadjuk az adat nevét éstartalmát. Pl.:.

    POST /teszt/ HTTP/1.1Host: wiliam.u-szeged.huadat: research

    PUT – A PUT üzenet segítségével a kérésben szereplő adathalmazt tudjukaz URI által megadott címre feltölteni. Amennyiben nincs még ilyennevű erőforrás (fájl), a szerver létrehoz egyet és erről értesíti is aklienst.

    DELETE – A DELETE üzenet segítségével a kérésben szereplő erőforrásttöröljük szerverről.

    TRACE – A szerver a TRACE üzenet keretében kapott tartalmat vissza-küldi, így egy alkalmazásrétegbeli visszacsatolást hozhatunk létre.Pl.:

    TRACE / HTTP/1.1Host: wiliam.u-szeged.huAdat: research

    HTTP/1.1 200 OKServer: Netscape-Enterprise/6.0Date: Sun, 23 Dec 2001 12:49:45 GMTContent-type: message/httpContent-length: 62

    TRACE / HTTP/1.1Host: wiliam.u-szeged.huAdat: research

    CONNECT – A HTTP/1.1-es szabvány lefoglalja a CONNECT függvény-nevet az olyan proxy-kal történő kapcsolatfelvétel számára melyek al-kalmasak a tunel (HTTP csomagba ágyazott csomagok) funkció meg-valósítására.

  • 2.2. A VÁLASZ ÜZENET 19

    A fejléc sorban küldhet a kliens további információkat a szerver számára.Ilyen információ például a fent látható Host mező is. A mezők teljes listájaés funkcióiknak részletes leírása megtalálható a HTTP/1.1 [3] ajánlásban. Ittcsak néhány példát említenénk:

    Host: A HTTP/1.1 ajánlás szerint minden kérés üzenetnek tartalmazniakell ezt a mezőt, mely a szervert azonosítja.

    If-Modified-Since: A válasz üzenet csak akkor tartalmazza a kívánt tartal-mat, ha az módosítva volt a kérés üzenetben elküldött időpont óta.

    User-Agent: Ezzel a fejléccel tudja magát azonosítani a kliens.

    Az üzenet tartalma általában üres. POST üzenetek esetén azonban itt he-lyezkedik el a szerver számára küldött adat neve és tartalma. Ha a tartalomnincs kódolva, akkor nem különbözik a fejléctől. Ilyen tartalmat (Adat:research) láthattunk az utolsó példában.

    2.2. A válasz üzenet

    A válasz üzenet, a kérés üzenethez hasonlóan igen egyszerű felépítésű. Avezérlő információkon kívül, szerencsés esetben, tartalmazza a kért erőfor-rást is. Ez egy weboldal esetén az oldal HTML kódja. A válasz üzenet akövetkezőket tartalmazhatja:

    • Állapot mező

    • Válasz fejléc mezők

    • Erőforrás:

    – erőforrás fejléc

    – erőforrás tartalom

    A fő mezőket CRLF karakterek választják el egymástól. Az állapot mező-ben a szerver azonosítja az általa használt HTTP protokoll verziót. A kérésfeldolgozásának eredményére utaló állapot kódot a gépi értékelés számára,valamint az állapot okának rövid szöveges felhasználó által könnyen ért-hető leírását. A háromjegyű decimális számok segítségével ábrázolt állapotkódokat 5 csoportba sorolhatjuk, melyek a kód első elemével azonosíthatók:

    • 1xx Információs - A kérés megérkezett, az eljárás folyamatban.

    • 2xx Siker - A kérés megérkezett sikerült megérteni és elfogadni.

    • 3xx Átirányítás -További beavatkozásra lesz szükség a kérés telje-sítéséhez.

  • 20 FEJEZET 2. A HTTP PROTOKOLL

    • 4xx Kliens oldali hiba - A kérés hibát tartalmaz vagy nem teljesíthető.

    • 5xx Szerver oldali hiba - A szervernek nem sikerült kiszolgálnia ajónak tűnő kérést.

    A válaszban a csoporton belüli második, harmadik karakterrel azonosíthatóállapot kódot találhatunk. Ezeknek az állapotkódoknak a pontos leírásafellehető a HTTP/1.1[3] ajánlásban. A válasz fejléc mezőkben az állapotkód-ban nem kódolható válaszra vonatkozó információkat adhatjuk meg. Ilyenpéldául az azonosítás kérése (WWW-Authenticate)vagy a válasz üzenet élet-kora másodpercekben (Age). Az erőforrás fejléc további információkat tar-talmazhat a válasz üzeneteben elküldött tartalomról. Egyik legfontosabbinformáció a tartalom típusa (Content-Type), mely meghatározza a tartalomkódolását. A tartalom típusát az alábbi módon ábrázoljuk:

    típus/altípus;paraméter

    A kódolási, média típusok a MIME (Multipurpose Internet Mail Extensions)[6] ajánlásban vannak megadva. A tartalom típusoknak két fő csoportjátkülönböztetjük meg: egy- és többrészből álló csoportok Az egy részből állócsoport a következő média típusokat tartalmazza:

    • text(szöveg) – szöveges információ. Egyszerű szöveges információazonosítására használjuk. Sorvég karakterként használhatjuk a CRLFkarakterpárt vagy közülük bármelyiket. A plain altípus esetén a szö-veg nem tartalmaz formázási, rendezési információkat, úgy kell meg-jeleníteni, ahogy van. Az egyik leggyakrabban használt altípus ahtml, itt HTML nyelvű szövegként értelmezendő. Ha a charset para-méter nincs megadva, akkor us-ascii típusként értelmezzük. Magyarszövegnél az ISO-8859-2-es karakterkészletet kell alkalmazni.

    • image(kép) – kép. A kapott tartalom képként értelmezhető, jeleníthetőmeg. Altípusként a jpeg kódolás használatos.

    • audio(hang) – A kapott tartalom hangként értelmezhető, játszható le.

    • video(video) – A kapott tartalom videóként értelmezhető, játszható le.

    • application(alkalmazás) – Ide tartoznak azok az adatok, melyeket meg-jelenítés előtt a hozzá tartozó programnak még fel kell dolgoznia.Altípusként gyakran használják a octet-stream és PostScript típusokat,melyek esetében a tartalom bináris formátumú. Gyakran használjákaz octet-stream típust hang és videóanyag kódolására.

    A másik csoportba tartoznak a ún. többrészű Multipart típusok. Itt a tarta-lom több egyforma vagy különböző típusú részből áll, melyeket boundaryparaméterrel megadható karaktersorozatok választják el egymástól. Min-den egyes rész rendelkezik egy fejléccel melyben, azonosítja az adott részkódolását.

  • 2.3. BIZTONSÁG 21

    2.3. Biztonság

    A HTTP protokoll tervezésénél elsőrendű szempont volt a magas megbízha-tóság és az egyszerűség. Az Internet elterjedésével egyre több új alkalmazásjelent, meg melyek új igényeket támasztottak a biztonság területén. Amikora biztonságról beszélünk, a következő szempontok merülhetnek fel:

    • az adatok titkossága

    • az adatok megbízhatósága

    • egyének azonosítása

    A HTTP-es ajánlás két igen egyszerű challenge-response(felszólítás-válasz)azonosítási eljárást definiál. Pontos leírásuk megtalálható az rfc2617-es[7]ajánlásban. A következőkben ezt a két azonosítási eljárást fogjuk részleteseb-ben megismerni.

    2.3.1. Basic Authentication

    Az azonosítási eljárás azon alapul, hogy a kliensnek azonosítania kell ma-gát a szerver számára egy azonosítóval(UID) és egy jelszóval (password). Ezaz azonosítás a szerver minden egyes tartományára (realm) kiterjedhet, dea szerver ezeket a tartományokat külön is kezelheti. A szerver csak abbanaz esetben szolgálja ki a klienst, ha a kliens által megadott jelszó és azono-sító megfelelő az URI által megadott védelmi környezetben. A szerver egyHTTP/1.1 401 Authorization Required hibaüzenet keretében elküldi a kliens-nek az engedélyezett azonítási eljárásokat és az adott védelmi tartománynevét.

    HTTP/1.1 401 Authorization RequiredDate: Fri, 28 Dec 2001 08:24:32 GMTServer: Apache/1.3.20 (Unix) PHP/4.0.6X-Powered-By: PHP/4.0.6WWW-Authenticate: Basic realm="My Realm"Transfer-Encoding: chunkedContent-Type: text/html

    A WWW-Authenticate fejlécben definiálta az azonosítási eljárást (Basic) és atartományt (realm = "My Realm") A kliens válaszában szerepelnie kell azAuthorization fejlécnek a következő módon:

    Authorization: Basic base64(user:pass)

    A base64() a felhasználói azonosító és a jelszó base64-es kódolását jelenti.A kódolás lényege, hogy a karakterláncunkat az ASCII kódokkal binárisanábrázolva felbontjuk 6 bites részekre, melyeket a hozzárendelt karakterek-kel ábrázolunk. Tehát 3 8 bites karaktert 4 6 bites karakteren ábrázolunk.

  • 22 FEJEZET 2. A HTTP PROTOKOLL

    A pontos hozzárendelés megtalálható a rfc2045-ös [8] ajánlásban. Megfi-gyelhetjük, hogy a felhasználó a jelszavát ún. cleartext-ként küldi el, ígyteljesen védtelen a lehallgatások ellen. Ezért ez az azonítási mód csak na-gyon korlátozottan, olyan helyeken javasolt, ahol nincs értékes információés a szerver generálja a felhasználó jelszavát. Ez azért fontos, mert a fel-használók kényelmesek és hajlamosak egy jelszót több helyen is használni,így a lehallgatott jelszóval más, esetleg lényegesen fontosabb helyekre isbe tud hatolni az lehallgató. A jelszó átvitelének problémáját oldja meg aDigest Access Authentication

    2.3.2. Digest Access Authentication

    A Basic Authentication-hoz hasonlóan a Digest azonosítási protokoll is azún. chalenge-response paradigmát használja. A Digest protokoll egy alkalmi(nonce) paramétert átküldve szólítja fel a klienst az azonosításra. A kliensa válaszban egy ellenőrző összeget küld, melynek kiszámításánál figye-lembe veszi az alkalmi paramétert, a felhasználó nevet, a jelszavát, a HTTPfüggvényt, és a kért URI-t. Az ellenőrző összeg kiszámítására ún. hashalgoritmusokat használnak, melyek egy tetszőleges hosszúságú bemenőkarakterláncból adott hosszúságú karakterláncot képeznek. A leképezésegyértelmű, tehát egy adott bemenetből csak egy adott kimenet nyerhető.A bemenő karakterláncon történt módosítás megvátoztatja a kimenetet. Akimenetből nem lehet kiszámítani a bemenetet. A kimenetet ’message di-gest’-nek (üzenet kivonatnak), ’fingerprint’-nek (ujjlenyomatnak) nevezik.Általában az MD5-ös [9] algoritmust használják, mely tetszőleges hosszú-ságú karakterláncból 128 bites kivonatot generál. Jelenlegi álláspont szerint,lehetetlen két különböző bementből egyazon kimenetet, illetve egy beme-netből tetszőleges kimenetet nyerni. A fenti módon kezelt jelszó nem kerülki visszafejthető formában. A jelszavakat nem szükséges titkosítatlan for-mában tárolni a szerveren, elegendő a belőlük képezhető kivonatot tárolni(ez esetben a másik oldalon a kivonatot kell kódolni). A WWW-Authenticateüzenet a következő paraméterekkel rendelkezik:

    • challenge– Itt lehet felsorolni a választható azonosítási protokollokat(Basic,Digest Access Authentication) ill. az utána igényelt paramétere-ket.

    • domain – Idézőjelekkel bezárt szóközökkel elválasztott URI lista. Azazonosítás hatókörét adja meg.

    • nonce – A szerver által definiált karakterlánc. Nagyon fontos a he-lyes összeállítása, mivel ezzel a lehallgatott kivonatolt jelszavak újra-felhasználása igen jól korlátozható. Tegyük fel, hogy az üzenet váltásfolyamán csak a jelszavunk kivonatát küldjük át. Ez esetben a lehall-gató egyén a kivonatolt jelszavunkkal ugyanúgy be tud jelentkezni

  • 2.3. BIZTONSÁG 23

    a szerverre, mint mi. Jóval nehezebb a dolga abban az esetben, hanem csak jelszavunkat kivonatoljuk, hanem előbb hozzáadunk egyolyan kivonatolt alkalmi karakterláncot (nonce), mely például az ak-tuális időpont mellett tartalmazza a kért tartalom URI-t illetve egy,csak a szerver által ismert kulcsot is. Ez esetben a lehallgató csak azelévülési ideig és csak az adott erőforráshoz férhet hozzá. Az alkalmikarakterláncot a szerveren kívül nem tudja más reprodukálni (mivelez is kivonatolt és csak a szerver ismeri a benne szereplő kulcsot). Afenti példa:

    nonce = H(időpont:URI:magán-kulcs)

    Itt a H() függvéy a kivonatoló függvény.

    • opaque – A szerver által küldött karakterlánc, melyet a kliensnekváltoztatás nélkül vissza kell küldenie.

    • stale – Értéke igaz, ha a szerver által kapott válasz kivonat azért nemfogadható el, mert elévült. Ez esetben a kliensnek az új nonce értékkelújra kell küldenie az adatokat, a felhasználótól azonban nem kell újrabekérnie a felhasználó nevet és a jelszót.

    • algorithm – A használt ellenőrző összeg(checksum) és kivonat(digest)algoritmusokat adhatjuk meg. MD5 az alapértelmezett mindkettőre.

    • qop-options – Opcionális, értéke auth, auth-int lehet, a válasz fejlécbenrészletesebben bemutatjuk.

    Az Authorization válasz paraméterei:

    • credentials – Itt választunk azonosítási protokollt, ill. megadjuk akérésben felsorolt paraméterek értékét.

    • username – Felhasználónév.

    • digest-uri – A kérés URI.

    • message-qop – Opcionális. Itt választhatjuk ki, a védelem minőségét(Quality of Protection). Ha auth-int az értéke, akkor a válasz karakter-lánchoz kivonatolás előtt többek közt hozzá kell adni a válasz tartal-mának kivonatát. Ezáltal a válasz üzenet lehallgatója csak az adottutasítást tudja újra végrehajtani, amíg a nonce el nem évül.

    • cnonce - Opcionális, de ha az előző paraméternek értéket adunk, ak-kor kötelező. A kliens által szabadon választott érték. Segítségé-vel megakadályozhatjuk a szerver oldali támadások egy részét. Te-gyük fel, hogy egy kliensünket eltérítik az eredeti szervertől és egyrossz szándékú szerverrel építi fel a kapcsolatot. Ebben az esetben

  • 24 FEJEZET 2. A HTTP PROTOKOLL

    (amennyiben kliensünk nem hajlandó Basic azonosításra) a szerveregyszerű nonce értéket küldhet amire már esetleg egy szótár segítsé-gével igen sok lehetséges jelszó értéket végigvizsgált. Így egyszerűjelszó esetén könnyebben megfejtheti jelszavunkat. Ha azonban sajátcnonce értékünket is hozzáadjuk a kivonatolás előtt akkor újra kellkezdenie a jelszó keresését.

    • nonce-count – Opcionális, de kötelező megadni, ha a message-qopparamétert megadtuk. Értéke az elküldött kérések száma az ebbena kérésben foglalt nonce értékkel. Ha két üzenetben ugyanaz a számszerepel, akkor az ismétlés.

    • response – A kivonatolt válasz. Kiszámításának módja a fentiekfüggvénye:

    – ha a message-qop paramétert nem adtuk meg:

    A1 = username-value:realm-value:passwdA2 = Method:digest-uri-valueresponse = "KD(H(A1),nonce:H(A2))"

    KD() – kivonatoló(digest) algoritmus (MD5),H() – ellenőrző összeg (checksum) algoritmus (MD5)

    – ha a message-qop paraméter auth:

    A1 = username-value:realm-value:passwdA2 = Method:digest-uri-valueresponse = "KD(H(A1),nonce:nonce-count:cnonce:qop:H(A2))"

    – ha a message-qop paraméter auth-int:

    A1 = username-value:realm-value:passwdA2 = Method:digest-uri-value:H(entity-body)response = "KD(H(A1),nonce:nonce-count:cnonce:qop:H(A2))"

    Egy példa üzenetváltás:

    Kérés:HTTP/1.1 401 Unauthorized

    WWW-Authenticate: Digestrealm="[email protected]",qop="auth,auth-int",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",opaque="5ccc069c403ebaf9f0171e9517f40e41"

    Válasz:Authorization: Digest username="Mufasa",

    realm="[email protected]",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",uri="/dir/index.html",qop=auth,nc=00000001,cnonce="0a4f113b",response="6629fae49393a05397450978507c4ef1",

  • 2.3. BIZTONSÁG 25

    opaque="5ccc069c403ebaf9f0171e9517f40e41"

    Mint láthattuk, a Digest Access Authentication protokoll a jelszó átvite-lénél fellépő biztonsági kockázatot kiküszöböli, ill. megvéd az ún. replay,ismétlő támadásoktól. Az átvitt adatokat azonban nem titkosítja. Két töké-letesebb megoldás született: az egyik a TLS protokoll, mely egy új rétegetvezetett be a szállító és az alkalmazás rétegek közé. A másik megközelítés aSHTTP protokoll, mely HTTP protokoll kibővítése adatvédelmi elemekkel.Mindkét megoldás biztosítja a következőket:

    • A kapcsolattartó felek biztonságos azonosítása aszimmetrikus, vagynyilvános kulcsú titkosítás segítségével.

    • Az adatátvitel titkosított. Külső személyek számára gyakorlatilagviszszafejthetetlen.

    • Az adatátvitel megbízható. Külső személyek nem tudnak észrevétle-nül hamis adatot beleilleszteni a titkosított adatfolyamba (MAC).

  • 26 FEJEZET 2. A HTTP PROTOKOLL

  • 3. fejezet

    Az SHTTP protokoll

    Az SHTTP [10] protokoll első változatát E. Rescorla és A. Schiffman ter-vezte az Enterprise Integration Technologies cég számára. Céljuk egyolyan biztonságos üzenetorientált kommunikációs protokoll megvalósításavolt, mely felülről kompatibilis a HTTP protokollal. Azonos képességek-kel ruházza fel mindkét oldalt, miközben megtartja a HTTP tranzakciósmodelljét. A HTTP üzenetek átvitelét becsomagolással valósítja meg. Azüzenetek becsomagolásának két ajánlásban rögzített módját használja (CMS[11],MOSS [12]). Mindkét ajánlás támogatja az üzenetek azonosítását, aláí-rását, titkosítását. Az üzenetek becsomagolása többszintű is lehet. Az ada-tok titkosítására használhatjuk a szimmetrikus és aszimmetrikus titkosítástis. A szimmetrikus titkosításhoz szükséges kulcs átadására a következőmódszereket biztosítja:

    • DH – Diffie-Hellman kulccsere algoritmus [13]

    • RSA

    • Inband – Egy s-http fejléc (Key-Assign) tartalmazza a kulcsot, termé-szetesen a fejléc titkosítva van a fogadó nyilvános kulcsával

    • Outband – A kulcs egyéb forrásból származik, pl.: begépelikAz üzenetek felépítése hasonló, mint a HTTP protokollnál. Rendelkeznekegy parancs/állapot sorral és a megfelelő fejlécekkel. A hagyományos HTTPfejlécek közül csak a HOST és a CONNECTION használható az S-HTTPüzenet fejlécei között. A kérés üzenetek az alábbi sorral kezdődnek:Secure * Secure-HTTP/1.4

    A válasz üzenetek:Secure-HTTP/1.4 200 OK

    A fejlécekben lévő paraméterek segítségével egyeztetnek a kapcsolatbanrésztvevők. Eldönthetik azt is, hogy használják-e a különböző biztonságifunkciókat (digitális aláírás, titkosítás, azonosítás). Egy fejléc sor az alábbirészeket tartalmazhatja:

    27

  • 28 FEJEZET 3. AZ SHTTP PROTOKOLL

    • Property – a paraméter, amit egyeztetnek, pl.: a titkosító algoritmus

    • Value – az értéke, pl.: DES-CBC

    • Direction – az irány, amire érvényes (a forrás szemszögéből)

    • Strength – (szükséges, opcionális, elutasítva)Egy példa a fejlécre:

    SHTTP-Key-Exchange-Algorithms: orig-optional=Inband, DH;recv-required=DH

    A fejlécek után következik a tartalom, mely általában a HTTP kéréstilletve választ tartalmazza titkosított formában. A tartalom titkosítására akövetkező algoritmusokat használhatjuk: DES-ECB, DES-EDE-ECB, DES-EDE3-ECB, DESX-ECB, IDEA-ECB, RC2-ECB,CDMF-ECB. A küldő azono-sítására és az üzenet integritásának védelmére a MAC (Message Authen-tication Code) kódot használja, mely az üzenet tartalmának és egy közöstitok kivonatából(hash) áll. Az üzenet aktualitásának ellenőrzéséhez itt isalkalmazzák a HTTP-nél használt nonce változót.

  • 4. fejezet

    A TLS protokoll

    A HTTP protokoll biztonsági hiányosságainak kijavítására egy másik meg-oldást is kidolgoztak. Itt nem nyúltak a HTTP protokollhoz, hanem egy újréteget helyeztek alá ( biztonsági (security) réteget). Két eljárás született, azegyik a Netscape által kifejlesztett SSL (Secure socket Layer) [14], a másik aMicrosoft által kifejlesztett PCT (Private Communication Transport) [15]. AzSSL népszerűbb volt, így a webes tranzakciók szabványává vált. A szé-les körben elterjedt SSL szabványosítása érdekében az IETF létrehozta aTLS [16] szabványt. A TLS (Transport Layer Security) protokoll feladata azadat védelmének és integritásának biztosítása két alkalmazás között. Kétrétegből áll: az alsó réteg a TLS Record Protocol, mely a TCP/IP vagy másmegbízható átvitelt biztosító protokollra épül, feladata a kapcsolat bizto-sítása. Ez egyrészt azt jelenti, hogy a kapcsolat szimmetrikus titkosítással(DES,RC4, ...) rejtjelezett. A kulcsok a szimmetrikus titkosításhoz kap-csolatonként generálódnak. Másrészt a kapcsolat megbízható, mivel azüzenet átvitel magába foglalja az integritás vizsgálatot is mindkét oldaliMAC segítségével. A következő műveleteket végzi el az adatokon:

    1. fragmentálás – a felső rétegből érkező adatfolyamot 214 bájtnál kisebbblokkokra tördeli

    2. tömörítés - opcionális. Ha a felek megegyeztek, akkor egy veszteség-mentes tömörítő algoritmussal tömörítik az egyes blokkokat. (Ezzelnem csak sávszelességet takarítunk meg, hanem az adat jellegét ismegváltoztatjuk, így még nehezebb visszafejteni.)

    3. tartalom védelem – legenerálják az adott blokkra jellemző MAC kódot,amely magában foglalja többek között a blokk sorszámát, a kivonatolóalgoritmus típusát, a blokk tartalmát, titkos kulcsot.

    4. titkosítás – adatfolyam vagy blokk-titkosító algoritmussal titkosítjáka blokkokat és a hozzájuk tartozó MAC kódokat.

    29

  • 30 FEJEZET 4. A TLS PROTOKOLL

    Titkosított adatok kerülnek átvitelre, majd a másik oldalon feldolgozásra.Ahhoz azonban, hogy ez a folyamat bekövetkezzen, a feleknek kapcsolatotkell teremteniük egymással, azonosítaniuk kell egymást, a megfelelő para-métereket egyeztetniük kell. Erre szolgál a TLS Handshake Protocol, mely aTLS Record Protocol fölött helyezkedik el. Minden kapcsolat rendelkezik azalábbi paraméterekkel:

    • session identifier – egy változó bájt sorozat, melyet a szerver generála kliens azonosítására

    • peer certificate – a társ X509v3-as bizonyítványa (nem kötelező)

    • compression method – a tömörítő algoritmus

    • cipher spec – a titkosító, illetve a MAC kiszámítására szolgáló algorit-mus

    • master secret – 48 bites titkos kulcs, melyet csak a kliens és a szerverismer

    • is resumable – engedélyezett-e a kapcsolat alapján új kapcsolatot létre-hozni (ekkor nincs szükség külön egyeztetésre, hanem ezeket a para-métereket használhatják a felek a session identifier kivételével)

    A fenti paraméterek egyeztetését szolgáltatja a TLS Handshake Protocol a TLSRecord Protocol számára. A kapcsolat-felépítés az alábbi lépésekből áll:

    1. Hello üzenetcsere, mellyel a felek kicserélik a véletlen számokat, mege-gyeznek a titkosító algoritmusokban és a kapcsolat másolhatóságában(is resumable)

    2. kicserélik a megfelelő rejtjelezési paramétereket annak érdekében,hogy létre tudják hozni az ún. főkulcs előtti kulcsot (premaster sec-ret)

    3. elküldik egymásnak a bizonyítványokat (certificates) és a különbözőtitkosítási információkat, melyek a kölcsönös azonosításhoz szüksé-gesek

    4. legenerálják a fő kulcsot (Master Secret) az előző kulcsból (premastersecret) és a kicserélt véletlen számokból

    5. a titkosítási paramétereket átadja a TLS Record Protocol számára

  • 5. fejezet

    A HTML nyelv

    A HTML dokumentum a hasznos tartalom és a különböző funkciókat meg-valósító elemek egyvelege. Az elemek, melyeket az SGML-től átvett jelölés-móddal ’< elem >’ jelölünk, alkalmasak a dokumentum megjelenítésénekdefiniálására, hiperhivatkozások kezelésére, valamint a felhasználói inter-aktivitás biztosítására. A böngésző elrejti előlünk a HTML elemeket éscsak a formázott tartalmat jeleníti meg számunkra. A következőkben meg-ismerkedünk a HTML nyelv néhány fontosabb szabályával, elemével. AHTML nyelv részletes leírása megtalálható a W3C szervezet honlapján [17].HTML fájlok létrehozására tapasztalataim szerint egy igen jól használhatóingyenes eszköz a HTML-kit 1.

    5.1. A html dokumentum általános felépítése

    Egy HTML dokumentum 3 fő részből áll:

    1. információ a HTML verziójáról

    2. fejrész (header)

    3. törzs (body)

    Egy egyszerű HTML dokumentum forrása:

    1http://www.chami.com/html-kit/

    31

    http://www.chami.com/html-kit/

  • 32 FEJEZET 5. A HTML NYELV

    Ez a fejléc

    Hello világ!

    Böngészőben megjelenítve:

    5.1. ábra. Egy egyszerű HTML oldal

    A dokumentumban használt HTML nyelv verzióját, az utasítások típu-sát a W3C által megadott DTD (document type declaration) elem segítségéveladhatjuk meg. A HTML 4.01-es ajánlás 3 elemet biztosít:

    • HTML 4.01 Strict DTD – Az elavultak kivételével minden elemet tar-talmazhat a HTML dokumentum. A beillesztendő sor:

    • HTML 4.01 Transitional DTD – Minden használható. A beillesztendősor:

  • 5.1. A HTML DOKUMENTUM ÁLTALÁNOS FELÉPÍTÉSE 33

    • HTML 4.01 Frameset DTD – Akkor használhatjuk, ha dokumentu-munkban kereteket (frame) definiálunk.

    A dokumentum következő részét a fejléc foglalja el, melynek kezdetét a , végét a utasítás jelzi. A fejléc elemei között legfontosabb, egy-ben kötelező a dokumentumcím, mely címet a és a utasításokközé kell zárni. A dokumentum ezen része az ablak címsorában jelenikmeg. A utasításban szereplő URIhatározza meg a báziscímet, melyből a relatív címeket értelmezni kell. Hanincs megadva, akkor az adott dokumentumhoz viszonyítva értendő a rela-tív cím. A utasítással jelölhető ki a dokumentumbanaz alapértelmezett betűméret. Az utasítás jelzi a keresőrendsze-rek számára, hogy index-dokumentumról van-e szó. A utasításbanszereplő opciók jelzik dokumentum kapcsolatait más dokumentumokkal,stíluslappal, címszalaggal, stb. Az elem jelezheti a name, contenttulajdonságok segítségével a keresőrendszerek számára a dokumentum-adatbázisba kerülő adatokat , pl. a dokumentum alkotóját, a létrehozóprogramot, rövid tartalmat, stb. Ezen elem http-equiv, content tulajdonságaisegítségével befolyásolhatjuk a 19. oldalon megemlített HTTP fejléceket. Ittadhatjuk meg például azt is, hogy az oldal nem tárolható proxy szervereken.Érdemes megadni a dokumentumban használt karakterkészletet is, mert akülönböző böngészők nem biztos, hogy a legmegfelelőbb karakterkészletethasználják.. Proxy vezérlés, karakterkészlet, szerző, információ a keresőszerverek számára:

    A felhasználó számára a , elemek közötti rész hordozza a leg-több hasznos információt. A elem fontosabb tulajdonságai:

  • 34 FEJEZET 5. A HTML NYELV

    • background – A háttérkép elérési útját adhatjuk meg.

    • text – A szöveg színét definiálhatjuk.

    • link – Az oldalon szereplő hivatkozások színét adhatjuk meg.

    • vlink – A felhasználó által látogatott hivatkozások színe.

    • alink – A felhasználó által kijelölt hivatkozások színe.

    A fenti tulajdonságokat megadhatjuk a 6 fejezetben bemutatott CSS segít-ségével is, az ajánlás ezt javasolja. A dokumentum törzsében lévő szövegformázására a szövegformázó utasítások, a szöveg logikai felépítését a cso-portosító, címszint elemek, míg a törzsben lévő objektumok, szövegrészekelhelyezkedésének definiálására a táblázatok szolgálnak. A következő 5.2,5.3, 5.4 fejezetekben ezeket mutatjuk be.

    5.2. Logikai felépítést definiáló elemek

    A dokumentum megjelenítésén kívül nagyon fontos az egyes részek azo-nosítása. Ezeket az információkat ugyan a felhasználó nem feltétlenül látja,azonban a dokumentum számítógépes feldolgozása esetén igen hasznosszolgálatot tehetnek. Segítségükkel egy általános struktúrát adhatunk do-kumentumunknak, logikai részekre oszthatjuk. A címsor elemeknek se-gítségével az egyes logikai részek rövid címeit adhatjuk meg. Jelölése:Cím. Fontosságuk, méretük a szint növekedésével csökken. Mint aHTML minden eleme, rendelkezhet Címazonosítóval. Azazonosítóknak egyedieknek kell lenniük az egész dokumentumban. Ren-delkezhetnek a megjelenítést megadó class tulajdonsággal is, mely a CSS-ben megadott megjelenítési módok közül választja ki a megfelelőt. Aszövegrészek csoportosítására szolgáló elemek a és a . Mindkételem rendelkezik a címsorok tulajdonságaival. A elemet a nagyobb ré-szek jelölésére (block element), míg a elemet a szövegen belüli logikairészek jelölésére használhatjuk (inline element). Íme egy példa HTML kódrészlet a fentiek bemutatására:

    Bemutatkozás

    Munkatársak

  • 5.3. SZÖVEG FORMÁZÁSA 35

    Cégünk munkatársai közé tartozik KovácsLajosés Nagy Péter.

    A kutató osztály munkatársai KovácsJános, ésNagy Szabolcs.

    A böngészőben a 5.2 ábrán látható módon nem látszik a felosztás, ám egyprogram számára feldolgozható módon rögzítettük a fontos információkat.Mint látjuk, a HTML nyelv ilyen irányú képességei igen korlátozottak. Ezvolt az egyik oka a 7. fejezetben bemutatott XML nyelv kifejlesztésének.

    5.2. ábra. Cég bemutató

    5.3. Szöveg formázása

    A HTML dokumentum megjelenítése független a szövegfájl formázásától,csak az ajánlásban megadott formázó utasítások hatása érvényesül. A bön-gésző lecseréli a dokumentumban lévő CR, LF karakter-párokat szóközökre, ill. az egymás mellett lévő szóközöket, tabulátorokat egy szóközre. A

  • 36 FEJEZET 5. A HTML NYELV

    dokumentumot bekezdésekre oszthatjuk (

    ). Egy-egy bekezdésre jel-lemző a stílusa (karakterek formátuma, színe . . . ), a sorok rendezési iránya,a rá jellemző nyelv, valamint, hogy ellátható id-vel. Az új bekezdés mindigúj sorban kezdődik. Sortörést a
    elem segítségével illeszthetünk a szö-vegbe. Ha azt szeretnénk elkerülni, hogy a böngésző két egymás mellettálló szó között ne használjon sortörést akkor közéjük az ún. nonbreakablespace ( ) elemet kell illesztenünk. Ha egy szöveget úgy szeretnénkviszont látni, ahogyan megformáztuk (szóközökkel, tabulátorokkal, sortö-résekkel), akkor azt a elemek közé zárva kell beillesztenünk a HTML dokumentumba. Az alábbielemeket is használhatjuk a szövegrészek megjelenítésének formázására:

    • – kiemelés

    • – vastag betű

    • – idézet (vékony, dőlt betűk)

    • – rövidítés

    • – alsó index

    • – felső indexA HTML dokumentumban listákat is használhatunk. Megkülönböztetünkszámozatlan, számozott, valamint definíció listákat.

    Listák

    almakörte

    dió

    almakörtedió

    almaAz alma egyik legfotosabb vitaminforrásunk.dióA dió kemény gyümölcs

  • 5.4. TÁBLÁZATOK 37

    A 5.3. ábrán láthatjuk a fenti kódot böngészőben megjelenítve. Az eddi-giekben az egyes szövegrészek formázását láthattuk, azonban nem derültki például az, hogyan tudunk két vagy több hasábos szöveget előállítani,illetve szövegeinket a dokumentumban megfelelően pozícionálni. A HTMLdokumentumban az egyes objektumok helyzetének megadására táblázatokszolgálnak A következő fejezetben erről lesz szó.

    5.3. ábra. Listák

    5.4. Táblázatok

    Táblázatok segítségével a dokumentum objektumait sorokba és oszlopokbarendezhetjük. A táblázatokat a elemekkel határoljuk. Atáblázatok sorait a elemekkel, míg az oszlopait , vagy elemekkel definiálhatjuk. Minden táblázatnak lehet címe , fejléce , törzse , és lábléce .Egy egyszerű táblázat:

    Táblázatok

  • 38 FEJEZET 5. A HTML NYELV

    Minta táblázat

    1. oszlop2. oszlop3. oszlop

    1. sor, 1. cella1. sor, 2. cella1. sor, 3. cella

    2. sor, 1. cella2. sor, 2. cella2. sor, 3. cella

    5.4. ábra. Egyszerű táblázat

  • 5.4. TÁBLÁZATOK 39

    A 5.4. ábrán látható módon jelenik meg egy böngészőben. A elem a következő tulajdonságokkal rendelkezhet:

    • summary – nem jelenik meg, viszont hasznos információt biztosíthataz olyan klienseknek, melyek braile írást vagy beszédet használnak

    • width – megadható pixelben vagy a böngésző rendelkezésére álló szé-lesség százalékában.

    • border – a táblázat rácsainak vastagsága pixelben. Ha nincs megadva,akkor nem jelennek meg a rácsok.

    • frame – táblázatunk keretezési módját adhatjuk meg.• rules – a táblázaton belüli keretezést adhatjuk meg.• cellspacing – a cellák közötti távolságot definiálhatjuk.• cellpadding – a cellákon belüli távolság mértéke.

    A 5.4. ábrán látható táblázatot kicsit paraméterezve:

    Táblázatok

    Minta táblázat

    1. oszlop2. oszlop3. oszlop

    1. sor, 1. cella1. sor, 2. cella1. sor, 3. cella

    2. sor, 1. cella2. sor, 2. cella2. sor, 3. cella

    A 5.5. ábrán látható módon a elem tulajdonságainak változ-tatásával sok lehetőségünk van a megjelenítés formázásra. További formá-zási lehetőségeket biztosítanak számunkra a cella elem colspan, rows-pan tulajdonságai. Ezek segítségével cellákat egyesíthetünk függőlegesenés víszintesen egyaránt.

  • 40 FEJEZET 5. A HTML NYELV

    5.5. ábra. Formázott táblázat

    Táblázatok

    Minta táblázat

    1., 2. oszlop3. oszlop

    1. sor, 1. cella1. sor, 2. cella

    1. sor, 3. cella,2. sor, 3. cella

    2. sor, 1. cella

  • 5.4. TÁBLÁZATOK 41

    2. sor, 2. cella

    5.6. ábra. Összevont cellák

    A táblázatot oszlopainak csoportosításával részekre tudjuk osztani, me-lyek egy vagy több oszlopot tartalmazhatnak. Az adott részegységbenmegadható az oszlopok szélessége, színe, stb. A elem-mel x számú oszlop fogható össze. A , elempároksegítségével is definiálhatunk oszlopcsoportot. Ekkor a csoportban lévőoszlopok tulajdonságait a elem segítségével tudjuk megadni.

    Táblázatok

    Minta táblázat

  • 42 FEJEZET 5. A HTML NYELV

    ABCD

    1. sor, 1. cella1. sor, 2. cella1. sor, 3. cella1. sor, 4. cella

    5.7. ábra. Csoportosított oszlopok

  • 5.5. HIVATKOZÁSOK 43

    5.5. Hivatkozások

    A HTML egyik legfontosabb szolgáltatása a hivatkozások kezelése. A hi-vatkozásoknak két formájával találkozhatunk: az egyik a elem, melycsak a fejrészben szerepelhet. Mint a fejrészben található legtöbb elem, a elem sem kerül megjelenítésre. Segítségével általában a külső stílus-leíró fájl elérési útvonalát adjuk meg.

    A másik hivatkozási elempár a csak a dokumentum törzsébenalkalmazható. Legfontosabb tulajdonsága a href="cel.html" mely a céloldalURI címét tartalmazza. Segítségével hivatkozni lehet külső erőforrásokra,de magára a tartalmazó oldalra is. Az oldalon lévő elemekben szereplőid-ket címezhetjük meg. Ilyenkor a következő formátumot használjuk:

    1 -->2 -->...Elso resz...

    Az elempár name tulajdonságára is hivatkozhatunk. A fentipéldában relatív címzést használtunk, azaz nem írtuk ki a teljes elérési útvo-nalat, hanem csak az adott oldalhoz viszonyítva adtuk meg a címet. Ha másbáziscímet szeretnénk használni, akkor azt a elemmel definiálhatjuk.

    5.6. Keretek (Frames)

    Az eddigiekben azt tapasztalhattuk, hogy egy böngészőben egyszerre egydokumentumot tekinthetünk meg. Felmerült azonban az igény olyan meg-oldásokra, amikor a böngésző ablakának egyik része változatlan, a másikviszont változik (menü, tartalom). Megoldás a keret (frame) szerkezet al-kalmazása. A böngészőben megjelenő területet a táblázatokhoz hasonlóanfeloszthatjuk függőlegesen és vízszintesen. Megadhatjuk, hogy az egyesrészekben mely html, vagy más dokumentumok jelenjenek meg. Azon azoldalon, melyen ezt a szerkezetet definiáljuk, nem szerepeltethetünk tör-zset.

    Több keretes példa

  • 44 FEJEZET 5. A HTML NYELV

    5.8. ábra. Többkeretes dokumentum

    Egyes kereteknél megadhatjuk, hogy tartalmaz-e gördítősávot ( scrol-ling = yes|no|auto),és a keret nevét (name="név") mely igen fontos szerepetjátszhat a hivatkozásoknál, mivel a elempárnak van egy target=""tulajdonsága, mely segítségével megadhatjuk, hogy a megcímzett erőfor-rás melyik keretünkben jelenjen meg. A keret fontosabb tulajdonságai közétartozik még a noresize tulajdonság, melynek megadása esetén a kerethatártnem lehet átméretezni. Érdekes lehet továbbá a frameborder=1|0 tulajdon-ság, mely segítségével megadhatjuk, hogy szeretnénk-e a kerethatárt látnivagy nem.

    5.7. Objektumok, Képek, appletek

    A HTML ajánlás nem csak szövegek kezelését támogatja. Elhelyezhetünkképeket, appleteket, más HTML objektumot is a dokumentumunkon. App-leteknek nevezzük azokat a programokat, melyek a weblap letöltésévelegyidőben automatikusan letöltődnek és futtatásra kerülnek a felhasználógépén. Objektumainkat a szöveghez hasonlóan táblázatok segítségével po-zícionálhatjuk. Képek beillesztéshez használhatjuk az elemet . Térké-peket (map) ( , ) is készíthetünk, melyek segítségével a kép

  • 5.7. OBJEKTUMOK, KÉPEK, APPLETEK 45

    más-más részére kattintva, a felhasználó más oldalakra jut. A térképeknekkét változata van: kliensoldali és szerveroldali. Kliensoldali térképek ese-tén a kattintás helyének kiértékelése a kliensoldalon történik, ezt használjukgyakrabban. Szerveroldali kiértékelést bonyolultabb térképeknél használ-junk, itt a kattintás koordinátája lesz elküldve a szervernek. A térkép elemfontosabb tulajdonságai:

    • name – a térkép neve.

    • area – minden egyes területet egy-egy elemet tartalmaz.

    • shape – a területet lefedő mértani alakzat neve (rect|circle|poly).

    • coords – a shape tulajdonsággal megadott alakzat sarkainak koordi-nátái (körnél a középpontjának koordinátája és sugarának hossza,poligonnál az első és utolsó pontnak meg kell egyeznie).

    • href – az adott részhez kapcsolódó erőforrás.Kliensoldali térkép:

    Képek, térképek

    HTML lapok egymásba ágyazására használhatjuk az elempárt. Ekkor az egyik HTML dokumentum a másikba ágyazva jelenikmeg.

    Képek, térképek

  • 46 FEJEZET 5. A HTML NYELV

    5.9. ábra. Képkezelés

    Az elemmel az ajánlás szerint az e fejezetben ismerte-tett összes elemet kiválthatjuk. Egyes böngészők ezeket a funkciókat nemfeltétlenül biztosítják. Fontosabb tulajdonságai:

    • classid – az objektum elem által megvalósított erőforrásra mutató URIpl.: ../../menu.png.

    • codebase – a relatív útvonalhoz definiálja a kiindulási pontot.

    • codetype – itt adhatjuk meg a classid által megadott erőforrás típusátpl.: image/png.

  • 5.7. OBJEKTUMOK, KÉPEK, APPLETEK 47

    5.10. ábra. Egymásba ágyazott dokumentumok

    • data – hasonló feladatokat lát el mint a classid.

    • type – hasonló feladatokat lát el mint a codebase.Az elemeket egymásba ágyazhatjuk. Amikor a böngé-sző nem tudja feldolgozni a külső elemet, akkor a belső elemet kezdi elfeldolgozni. Így lehetőségünk van arra, hogy a különböző képességű bön-gészőket különböző módon szolgáljuk ki.

    Képek, térképek

  • 48 FEJEZET 5. A HTML NYELV

    Appleteket is az elem segítségével ágyazhatjuk be do-kumentumunkba. Erről a 15.1 fejezetben szólunk bővebben.

    5.8. Űrlapok (Forms)

    A HTML dokumentum nem csak információt szolgátat, hanem segítségévela szerver információt is kaphat a felhasználótól. Egy vagy több kérdőívet isközzétehetünk a elemek segítségével, melynek legfontosabbtulajdonságai :

    • action – a feldolgozó eleme URI címe.

    • method – a HTTP protokoll, mely függvénye segítségével küldjük eladatainkat. A 16. oldalon található GET függvényt felhasználvaaz URI-ban ágyazva, míg a 18. oldalon található POST függvénysegítségével a HTTP a fejléc sorok után megadva, név-érték páronkéntküldi el az információt a szervernek.

    • name – az űrlap neve.Az űrlap elemek közé helyezzük el a szükséges űrlapmezőket. A fontosabbűrlapmezők és tulajdonságaik:

    • input elem – típusától (type) függ a bevihető információ formája. Tí-pusai :

    – text – egyszerű szöveges információ, fontos tulajdonsága a beírha-tó szöveg maximális hossza (maxlength) ill. a mező hossza (size).

    – password – hasonló a text típushoz, azzal a különbséggel, hogy abeírt karakterek nem jelennek meg.

  • 5.8. ŰRLAPOK (FORMS) 49

    5.11. ábra. Nem ismert objektum esetén a belső objektumot kerül feldolgo-zásra

    – checkbox - jelölőnégyzet, melyet ha több van belőle, akkor a nametulajdonsággal tudjuk csoportosítani. Fontos tulajdonsága méga value, mellyel az értékét adhatjuk meg ill. a checked, mellyel azalapértelmezett állapotát adhatjuk meg.

    – radio - rádiógomb. Ugyanolyan tulajdonságai vannak, mint acheckbox-nak, azzal a különbséggel, hogy itt egy csoportból csakegy választható ki

    – submit megjelenítési formája egy gomb. Segítségével elküldhet-jük az adott űrlapot.

    – file – segítségével a fájlrendszerben tallózhatunk.

    – hidden – rejtett elem. Hasznos lehet egyes értékek átadására.

  • 50 FEJEZET 5. A HTML NYELV

    – button – egy nyomógomb jelenik meg, melynek megnyomásárafüggvényt tudunk futtatni (bővebben a 13. fejezetben).

    – reset – egy nyomógomb jelenik meg, melynek megnyomására azűrlap elemei alapállapotba kerülnek.

    • select – segítségével egy legördülő listát hozhatunk létre. Fontosabbtulajdonságai:

    – size – itt definiálhatjuk a látható sorok számát

    – multiple – több mint egy elem is kiválasztható

    – name – az elem neve

    – option – ezzel az elemmel definiálhatunk sorokat a listában. For-mátuma: a projekt . A selected tu-lajdonságával tudjuk alapértelmezésben kiválasztottá tenni azadott oszlopot.

    • textarea – hasonló funkciót lát el, mint az azzal akülönbséggel , hogy itt több soros szöveget is be tudunk írni. Fonto-sabb tulajdonságai:

    – name – az elem neve.

    – rows – az egyszerre megjeleníthető sorok száma.

    – cols – az egyszerre megjeleníthető oszlopok .száma

    Kérdoiv

    Vezetéknév:

    Keresztnév:

    Nem:

    Osztály:

    A osztályB osztály

  • 5.8. ŰRLAPOK (FORMS) 51

    Leírás:

    Ide kell beírni a leírást

    5.12. ábra. Űrlap

  • 52 FEJEZET 5. A HTML NYELV

    Az egyes elemek között a TAB gomb segítségével is mozoghatunk. Ilyen-kor fontos a tabindex tulajdonság, mely a sorrendet adja meg és mindenelemnél definiálnunk kell. Mint láthatjuk, adatokat több módon is megad-hatunk. Kezelésükről a 13. fejezetben lesz szó. A következő fejezetben aCascading Style Sheets nyelvvel foglalkozunk, mely megkönnyíti a weblapokformázását.

  • 6. fejezet

    CSS

    A HTML elemek eredetileg a dokumentum tartalmának definiálására hoz-ták létre. A megjelenítés minden formázó elemet mellőzve a böngészőrevolt bízva. A két fő böngészőgyártó azonban a megjelenítés formázása ér-dekében újabb elemeket definiált (font,color), így egyre nehezebb volt olyanweboldalt létrehozni, ahol a tartalom elkülönült a formázástól. A problémamegoldása érdekében a W3C létrehozta a CSS [18] szabványt. A stílusok aHTML-ben definiálják a megjelenítést. Általában egy külső fájlban vannaktárolva, elősegítve ezzel, hogy több oldalon is ugyanazt a stílust használ-hassuk. Amennyiben módosítani szeretnénk a stílust, azt csak egy helyenkell megtennünk. A stílus lapok az alábbi helyeken definiálhatóak:

    • a HTML elemen belül.

    • a HTML dokumentum fejrészében.

    • külső css fájlban.

    • több külső css fájlban.

    Ha egy dokumentumban több helyen is definiáljuk a stílust, akkor a követ-kező érvényesítési sorrend kerül alkalmazásra :

    1. a böngésző alapértelmezett stíluslapja.

    2. külső stíluslap.

    3. a fejrészben definiált stíluslap.

    4. az egyes elemekben definiált stílusok.

    Itt a 4. a legerősebb.

    53

  • 54 FEJEZET 6. CSS

    6.1. A CSS nyelv szabályai

    A CSS bejegyzés három részből áll:

    • választó (selector) általában az a HTML elem, melynek tulajdonságátdefiniálni szeretnénk.

    • tulajdonság (property) a HTML elem tulajdonsága.

    • érték (value) a HTML elem értéke.

    Például:

    body {color: yellow}

    Ha az érték több szóból áll akkor idézőjelbe kell tennünk:

    p {font-family: "sans serif"}

    Amennyiben szeretnénk egyszerre több mint egy tulajdonságot definiálni,akkor az egyes tulajdonságokat ’;’-vel kell egymástól elválasztani:

    p {text-align: center; color: red} vagy p { text-align:center; color: black; font-family: arial }

    Lehetőségünk van egyszerre több elem tulajdonságait is definiálni, ekkor’,’-vel kell őket elválasztani:

    h1, h2, h3, h4, h5, h6 {color: green }

    A class paraméterrel egy HTLM elemnek több stílust is definiálhatunk, me-lyek közül a class="x" paraméter megadásával választhatunk:

    p.jobb {text-align: right} p.kozep {text-align: center}

    Ekkor a HTML dokumentumban a következő módon hivatkozhatunk:

  • 6.2. A CSS DEFINIÁLÁSA 55

    Ez a bekezdés jobbra lesz igazítva

    Ez a bekezdés középre lesz igazítva.

    Nem kötelező megadnunk a HTML elem nevét, ekkor a stílus minden olyanelemre alkalmazható mely rendelkezik a szabályozott tulajdonsággal.

    .kozep {text-align: center}

    Egy-egy id-re is hivatkozhatunk közvetlenül, illetve megadhatjuk, hogyaz adott id vel jellemzett elemre csak akkor vonatkozik, ha az egy adottelemcsoportba tartozik.

    #intro { font-size:110font-weight:bold; color:#0000ff;background-color:transparent }

    Itt csak a bekezdésre vonatkozhat:

    p#intro { font-size:110font-weight:bold; color:#0000ff;background-color:transparent }

    6.2. A CSS definiálása

    Külső CSS lapot a következő módon kapcsolhatunk a HTML dokumentum-hoz:

    A HTML oldalon belül a következő módon definiálhatunk stílust:

    • A fejrészben:

    hr color: siennap margin-left: 20px body background-image:url("images/back40.gif")

    • Az elemnél:

  • 56 FEJEZET 6. CSS

    Ez egy bekezdés

    6.3. Az egyes elemek tulajdonságai

    A háttér tulajdonságait a 6.1 táblázatban látható tulajdonságok segítségéveladhatjuk meg az egyes elemekre. A szöveg megjelenítését a 6.2 táblázatbanmegadott módon definiálhatjuk. Az egyes betűkre megadható formázáso-kat a 6.3 táblázatban találhatjuk. A határvonal tulajdonságok segítségévelmegadhatjuk az egyes elemek (nem csak a táblázatok) határvonalainak astílusát, színét, vastagságát. A négy oldalvonalat külön-külön beállíthatjuk,a táblázatban szerepeltetett alsó vonalhoz hasonlóan. (border-left , border-right , border-top ).Részletesen a 6.4 táblázatban találhatjuk meg az egyestulajdonságokat. Margók segítségével szabályozhatjuk a térközt az egyeselemek között. Negatív értékeket is megadhatunk, ilyenkor átlapolódnak.Az egyes margók külön-külön és együtt is szabályozhatóak. Tulajdonsá-gaik a 6.5 táblázatban láthatóak. A padding tulajdonsággal beállíthatjuk azelem és a határvonala közötti távolságot, a paramétereket a 6.6 táblázat-ban tekinthetjük meg. Egyéni megjelenítést kölcsönözhetünk listáinknakis, ahol akár képek is lehetnek a felsorolások előtt. A tulajdonságok részle-tesen a 6.7 táblázatban találhatóak. Figyelem ! Nem mindegyik böngészőtámogat minden tulajdonságot.

    6.1. táblázat. A háttér tulajdonságaiTulajdonság Leírás Értékbackground Segítségével az összes tulaj-

    donság beállíthatóbackground-colorbackground-imagebackground-repeatbackground-attachmentbackground-position

    background-attachment Beállítja, hogy a háttérkép fix,vagy az oldallal együtt gördül.

    scroll, fixed

    background-color Egy elem háttérszínét beállítja. color-rgb color-hex color-nametransparent

    background-image A háttérképet adhtajuk meg. url none

    background-position A háttérkép pozicióját állíthat-juk be.

    top left top center top right cen-ter left center center center rightbottom left bottom center bot-tom right x-% y-% x-pos y-pos

    background-repeat A háttérkép ismétlődését defi-niálhatjuk.

    repeat repeat-x repeat-y no-repeat

  • 6.3. AZ EGYES ELEMEK TULAJDONSÁGAI 57

    6.2. táblázat. A szöveg tulajdonságaiTulajdonság Leírás Értékcolor szín szín

    direction A szöveg irányát állítja be ltr, rtl

    letter-spacing Változtatja a karakterek közöttitávolságot.

    normal, hossz

    text-align A szöveg rendezését állíthatjukbe.

    left, right, center, justify

    text-decoration Díszítést ad a szövegnek none, underline, overline, line-through, blink

    text-indent Az első sor behúzása. hossz %

    text-transform Definiálja a karakterek típusátegy szövegben.

    none, capitalize, uppercase, lo-wercase

    white-space Meghatározza a szóköz hasz-nálatát egy szöveg előtt

    normal, pre, nowrap

    word-spacing Meghatározza a szóközt a sza-vak között

    normal, hossz

    6.3. táblázat. A betűk tulajdonságaiTulajdonság Leírás Értékfont A betű összes tulajdonsága ál-

    lítható segítségével.font-style font-variant, font-weight, font-size/line-height,font-family, caption, icon,menu, message-box, small-caption, status-bar

    font-family A betűk családját állítja be family-name, generic-family

    font-size A betűk méretét definiálja. xx-small x-small, small, me-dium, large, x-large, xx-large,smaller, larger, length, %

    font-variant A betűk típusát állítja be. normal small-caps

    font-weight A betűk vastagságát szabályoz-hatjuk .

    normal, bold, bolder, lighter,100, 200, 300, 400, 500, 600, 700,800, 900

  • 58 FEJEZET 6. CSS

    6.4. táblázat. A keretvonalak (border) tulajdonságaiTulajdonság Leírás Értékborder Segítségével mind a négy ol-

    dalra beállíthatjuk a következőtulajdonságokat.

    border-width, border-style,border-color

    border-bottom Az alsó határvonal tulajdonsá-gait definiálhatjuk.

    border-bottom-width, border-style, border-color

    border-bottom-color Az alsó vonal színét állíthatjukbe.

    border-color

    border-bottom-style Az alsó vonal stílusát változtat-hatjuk.

    none, hidden, dotted, dashed,solid, double, groove, ridge, in-set, outset

    border-bottom-width Az alsó vonal vastagsága. thin, medium, thick, vastagság

    6.5. táblázat. A margók (margin) tulajdonságaiTulajdonság Leírás Értékmargin Segítségével mind a négy ol-

    dalra beállíthatjuk a következőtulajdonságokat.

    margin-top, margin-right,margin-bottom, margin-left

    margin-bottom Az alsó margó tulajdonságaitdefiniálhatjuk.

    auto, length, %

    margin-left A baloldali margó tulajdonsá-gait állítjuk.

    auto, length, %

    margin-right A jobboldali margó tulajdonsá-gait állítjuk.

    auto, length, %

    margin-top A felső margó tulajdonságaitállítjuk.

    auto, length, %

    6.6. táblázat. PaddingTulajdonság Leírás Értékpadding Segítségével mind a négy ol-

    dalra beállíthatjuk a következőtulajdonságokat.

    padding-top, padding-right,padding-bottom, padding-left

    padding-bottom Az alsó helyköz tulajdonságaitdefiniálhatjuk.

    length, %

    padding-left A baloldali helyköz tulajdonsá-gait állítjuk.

    length, %

    padding-right A jobboldali helyköz tulajdon-ságait állítjuk.

    length, %

    padding-top A felső helyköz tulajdonságaitállítjuk.

    length, %

  • 6.3. AZ EGYES ELEMEK TULAJDONSÁGAI 59

    6.7. táblázat. ListákTulajdonság Leírás Értéklist-style Segítségével beállíthatjuk a kö-

    vetkező tulajdonságokat.list-style-type, list-style-position, list-style-image

    list-style-image Képet tehetünk a felsorolásjelőelem helyére.

    none, url

    list-style-position A listajelző elem pozicóját sza-bályozhatjuk.

    inside, outside

    list-style-type A listajelző elem típusát defini-álhatjuk.

    none, disc, circle, ...

  • 60 FEJEZET 6. CSS

  • 7. fejezet

    Az XML nyelv

    A HTML szabvány lassan tíz éves lesz. Ma már olyan Web alkalmazá-sok vannak, amilyenekre tíz évvel ezelőtt még senki sem gondolt. Aze-business és más vállalatközi alkalmazásoknak, egymástól nagy távolságralevő osztott rendszereknek kell gyorsan és hiba nélkül működniük. Azalkalmazásoknak képeseknek kell lenniük arra, hogy más alkalmazással,más technológiával együttműködjenek, hibamentes adatcserét folytassa-nak. A webes kliensek is igen sokrétűvé váltak. Megjelentek WAP (WirelessApplication Protokoll) technológiát támogató mobil telefonok ill. az egészenmás technológiát alkalmazó menedzser kalkulátorok. Az adatok átalakí-tása döntő fontosságúvá vált. Ezen feladatok, problémák megoldására,kezelésére hozták létre az XML nyelvet és keretrendszerét. A következőfejezetben az XML nyelvről lesz szó.

    7.1. XML

    Az XML (Extensible Markup Language) egy metanyelv, mely más nyelvekmeghatározására szolgál. A W3C szervezet fejlesztette ki, jelenleg az 1.0-ásverziónál tart. A W3C oldalán található ajánlás [19] igen nehezen olvasható,ezért érdemes meglátogatni a www.xml.com oldalon megtalálható megjegy-zésekkel ellátott változatát is [20]. Az XML egy olyan jelölőnyelv, mely azadott nyelvnek sem a jelölőelem-készletét, sem a nyelvtanát nem határozzameg (ez egy kicsit sarkított, később láthatjuk, hogy néhány igen egyszerűfeltételnek eleget kell tennie). A jelölőelem készlet alatt azon elemek halma-zát értjük, melyeknek értelmük van egy bizonyos nyelvértelmező (languageparser) számára. Nyelvtan alatt pedig az adott jelölőelem-készlet helyeshasználatának szabályait értjük. A HTML-ben például a jelölőelem készletszigorúan definiált. Új elemeket, vagy régi elemek számára új tulajdon-ságokat nem tudunk definiálni, mivel a nyelvértelmező nem tudja őketértelmezni. Mivel az XML sem a jelölőelemeket, sem a nyelvtant nem hatá-rozza meg, teljes mértékben kiterjeszthető. E tulajdonsága folytán a legtöbb

    61

  • 62 FEJEZET 7. AZ XML NYELV

    környezethez könnyen alkalmazható, alakítható. Annak érdekében, hogyegy XML dokumentum széles körben használható, értelmezhető legyen,néhány szabályt teljesítenie kell. Először is, jól formázottnak (Well formed)kell lennie. Jól formázott az a dokumentum, melynél minden megnyitottjelölőelem le is van zárva és nem tartalmaz a sorrendből kiágazó jelölőele-meket (nested). Meg kell felelnie az általános alapszabálykészletnek. Ezeketa szabályokat alkalmazzák az XML ismerő programok (XML aware), amikora dokumentumot feldolgozzák. Második fontos szabály az, hogy egy XMLdokumentum érvényes (valid) lehet, ez azonban nem kötelező. Érvényesdokumentum az, amely megfelel a dokumentum típus definícióban (DTDDocument Type Definition) leírt szabályoknak. A DTD meghatározza a jelölő-elemkészletet, és a nyelvtant. Nem kötelező ugyan, de érdemes megadniaz adott XML dokumentumra vonatkozó DTD-t, mivel segít megérteni azXML dokumentumot. Az XML tulajdonképpen az adatábrázolásért felel,míg a DTD a hordozhatóságot biztosítja. A következő példában egy XMLdokumentumot láthatunk:

    Kardos KatalinNagy Emese2002.05.01

    A dokumentum két részre osztható. A fejlécre (header) és a dokmentum-törzsre (body). Esetünkben az első sor a fejléc, mely információkat szolgáltatill. parancsokat ad az XML értelmező, feldolgozó programoknak. Ezeketaz utasításokat feldolgozási utasításoknak (PI) nevezzük. A fejrészben ál-talában szerepel egy DOCTYPE deklaráció, mely segítségével megadhat-juk a dokumentum nyelvtani szabályait és elemeit leíró DTD fájl elérésiútvonalát. Első paramétere a dokumentum gyökér eleme, a második pa-ramétere lehet SYSTEM vagy PUBLIC értékű. A SYSTEM esetén meg kelladni az elérési útvonalat. A PUBLIC azt jelenti, hogy a DTD nyilvános ésszámos helyen hozzáférhető (pl.: a HTML dokumentumok elején láttunkilyent.). A következő sorban egy nyitó elem található. Ezt az elemet gyökérelemnek is nevezik. Segítségével állapítja meg az XML értelmező az XMLdokumentum elejét és végét. Minden XML dokumentumnak kötelező egygyökérelemet tartalmaznia. Egy dokumentumban csak egy gyökér elemlehet. Ha az előzőekben leírtak szerint megvizsgáljuk dokumentumunkat,akkor megállapíthatjuk , hogy jól formázott, mivel minden nyitó elemhezzáró elem tartozik és nincsenek egymást keresztező elem párok. Az XMLmegkülönbözteti a kicsi és a nagy betűket (case sensitive), a szóközöket meg-tartja, a CR/LF párokat lecseréli LF karakterre. Ha azt szeretnénk, hogy az

  • 7.1. XML 63

    XML értelmezőnk kihagyjon egy adott kódrészletet, akkor azt a következőmódon jelölhetjük meg:

    A törzs adatszerkezetét elemek definiálják, melyek névvel, egy vagy többtulajdonsággal valamint egy elem értékkel rendelkezhetnek. Az elemeknevét nagybetűvel vagy aláhúzással célszerű kezdenünk. Az elemek nevetetszőleges hosszúságú lehet és nem tartalmazhat szóközt. Minden meg-nyitott elemet be kell zárni. Kivétel ez alól az üres elem, ami egy tagbóláll.

  • 64 FEJEZET 7. AZ XML NYELV

    Kardos KatalinNagy Emese2002.05.01

    Ha az xmlns tulajdonság után nem adunk meg helyettesítő nevet (alias),akkor az alapértelmezett névtér az xmlns-ben definiált névtér lesz.

    Mint láthattuk szinte tetszőleges struktúrában és tetszőleges elemekkel tu-dunk XML dokumentumot létrehozni. Ahhoz azonban, hogy egy általunklétrehozott dokumentumot más is megértsen (gép vagy ember) szükség vana fenti példában is látható DTD-re, Dokumentum Típus Deklarációra. ADTD feladata az, hogy meghatározza az XML dokumentum minden elemét,az engedélyezett tulajdonságokat, esetenként az engedélyezett értékeket.

    A fenti példából kiderül, hogy a dokumentumunkban négy elem engedé-lyezett: (Feladat, vegrehajto, megbizo, hatarido). Az elem neve után adhatjukmeg az engedélyezett tartalmat. Esetünkben a Feladat elem tartalmazhatja amásik három elemet, melyek egyszerű karakteres adatot tartalmazhatnak.A Feladat elemnél nem definiáltuk, hogy az adott elem hányszor jelenhetmeg. Ezt a 7.1 táblázatban lévő módosítók segítségével tehetjük meg. Azismétlődés egy elem helyett esetenként egy elem csoportra vonatkozik, eztábrázolhatjuk az elemek csoportosításával.

  • 7.1. XML 65

    7.1. táblázat. DTD Ismétlődés operátorokOperátor Leírásnincs Pontosan egyszer kell szerepel-

    nie

    ? Egyszer vagy egyszer sem

    + Legalább egyszer

    * Akárhányszor (0 is)

    Ilyenkor az elemek neveit zárójelbe tesszük és a zárójel után helyezzükel a csoportra vonatkozó ismétlődés operátort. Hierarchiánk felépítésérehasználhatjuk a vagy utasítást is.

    Az adott elem tulajdonságainak paramétereit az alábbi módon adhatjukmeg:

    Tulajdonság leggyakrabban a CDATA, mely karakterekből álló adathalmaztjellemez. Ha módunk van rá, adjuk meg a lehetséges értékeket (egyrésztsegít a dokumentum ellenőrzésben, másrészt a könnyebben értelmezhetővéteszi azt):

    A fenti példában a feladat elem "munkahely" tulajdonsága csak az "irinyi"vagy "arpadter" értékeket veheti fel. A módosítónak a következő értékeilehetnek:

    • #IMPLIED – Nem feltétlenül szükséges.

    • #REQUIRED – Szükséges.

    • #FIXED– Kötelező a jelenléte és az értéke egyaránt.

    Módosító lehet még a tulajdonság alapértelmezett értéke idézőjelben:

  • 66 FEJEZET 7. AZ XML NYELV

    Ilyenkor, ha nincs megadva, akkor az "irinyi" értéket veszi fel. A DTDrendelkezik még néhány tulajdonsággal, azonban mint a példákból is lát-hatjuk, felépítése nem igazán hasonlít az XML dokumentuméra, a jövőbenvalószínűleg a most fejlődő XML Schema lesz az elterjedtebb, mely azonkívül, hogy XML felépítésű, lehetővé teszi saját adat típusok definiálásátis, elősegítve ezzel a dokumentum igen pontos specifikálását (a CDATAhelyett használhatunk int, string adattípusokat). Mint láthattuk, az XML ki-válóan alkalmas adathalmazok ábrázolására azonban a megjelenítést nemigazán definiálja. Az XSL nyelv segítségével tudjuk XML dokumentumun-kat szinte tetszőleges formátumúvá alakítani. A következő fejezetben errőllesz szó.

  • 7.2. XSL 67

    7.2. XSL

    Az XSL-XML páros segítségével megvalósíthatjuk az adatok és a formázáselkülönítését. Ez az architektúra a következő előnyös tulajdonságokkalrendelkezik:

    • szabványos külalak – egy vállalaton belül egységes külalakot használ-hatnak, amit egyszerre tudnak módosítani

    • kliensek megkülönböztetése – a különböző kliensek számára külön-böző módon jelenik meg ugyanaz a tartalom (WAP,Lynx,IE)

    • különböző médiumok – ugyanazt az adathalmazt szeretnénk papíron,Weben, . . . viszontlátni

    Az XSL (Extensible Stylesheet Language) [21] stílusleíró nyelv tartalmazzaaz XPath [22] nyelvet, mely az XML dokumentumok egyes részeinek cím-zésére szolgál, az XSLT (XSL Transformations) [23] nyelvet, mely definiáljaa transzformációt az XML fából egy másik formátumba, valamint az XSLnyelvet, mely az egyes objektumok formázásáról gondoskodik. Ezek utánnem foglalkozunk a három nyelvel külön-külön, hanem megpróbáljuk őketegyütt alkalmazni. Részletes leírásuk a megtalálható a W3C ajánlásban.Az XML-hez hasonlóan az XSL stíluslapoknak is jólformázottnak kell len-niük, valamint tartalmazniuk kell a névtér deklarációt. Az xsl előtagothasználó XSL névtér határozza meg azokat az elemeket, melyekre az át-alakítás során szükség van. Az XSL-re vonatkozó névtér a W3C oldalántalálható (http://www.w3c.org/ 1999/XSL/Transform). Az átalakítás folyamánaz XSL sablon feladata, hogy meghatározza egy adott elem helyét az XMLdokumentumban és definiáljon egy szabályt vagy szabályrendszert, melysegítségével az adott elemet átalakítja. A sablont, mellyel az adott elemethelyettesítjük, a template elem használatával definiálhatjuk.

    ez kerül az adott elem helyére

    Az eredm