Wiki bemutató webes technológiákról

Szkriptírás


Ebben a részben különös fontossággal bír a megjelölt szkriptek írása.

Események rögzítése más kiszolgálókról


Ha egy ablak keretek elfog események oldalain más szerverek használja enableExternalCapture eljárás egy aláírt script kérő jogosultságokat UniversalBrowserWrite.

Használja ezt a módszert, mielőtt meghívná a captureEvents metódust. Például, ha a következő kódot használja, egy ablak képes minden kattintási eseményt rögzíteni minden keretein.

Jelöletlen réteg izolálása egy kijelölt konténer belsejében


A jelöletlen rétegnek a címkézett tárolóban való létrehozásához további lépéseket kell végrehajtania annak biztosítására, hogy a jelöletlen szóban lévő szkriptek megfelelően működjenek.

Nemzetközi szimbólumok a megjelölt szkriptekben

Scripts tartalmazó nemzetközi karaktereket (nemzetközi), nem lehet címkézni, mert az átalakulási folyamat a karakterek a helyi karakterkészlet érvényteleníti az aláírást. A korlátozás megkerüléséhez:

Import és export funkciók


Előfordulhat, hogy a minősített tárolókban (ablakok és rétegek) történő híváshoz interfészek szükségesek. Ehhez használja az import és export utasításokat. A funkció neve exportálásával a konténeren kívüli szkriptekhez importálható, a konténer ellenőrzése nélkül.

Csak olyan funkciókat importálhat és exportálhat - mint felső szintű funkciók (az ablakobjektumhoz társítva) és más objektumok módszerei. Nem lehet importálni vagy exportálni az objektumokat teljes egészében vagy olyan tulajdonságokat, amelyek nem funkciók.

Függvény importálása az alkalmazási körbe új funkciót hoz létre, amelynek neve az importált függvény. Az ilyen funkció hívása a megfelelő funkciót a minősített tárolóból hívja.

A címkézett szkriptben, amely meghatározza a más szkriptekhez hozzáférni kívánt funkciót, használja az exportot. A nyilatkozat szintaxisa:

ahol minden expr a függvény nevében kell megoldódnia. Az export operátor minden funkciót importként jelez.

A szkriptben, amelyben importálni szeretné a funkciót, használja az import utasítást. A nyilatkozat szintaxisa:

Az expr.funName import végrehajtása értékeli az expr értéket és importálja az objektum funName funkcióját az aktuális hatókörön belül. Hiba lesz, ha az expr nem értékeli az objektumot, ha nincs funName nevű függvény, vagy ha a függvény létezik, de nem importált. Importálás végrehajtása expr importál minden importált funkciót expr.

Ebben a példában három oldal van egy keretben. A containerAccess.html fájl határozza meg ezt a keretet és felhívja a felhasználó által definiált függvényt, amikor betölti a frameet. Egy oldal, secureContainer.html. tartalmaz egy címkézett szkriptet, és exportálja a funkciót. Egy másik oldal, access.html. behozza az exportált funkciót, és felhívja.

Mivel ez a példa olyan függvényt exportál, amely nem tartalmazza vagy nem igényel kiterjesztett jogosultságokat. kiválaszthatja a kiváltságokat tartalmazó függvényt. Ha ezt teszed, rendkívül óvatosnak kell lenned, nehogy véletlenül hozzáférj a hackerhez.

A containerAccess.html fájl a következő kódot tartalmazza:

A secureContainer.html fájl a következő kódot tartalmazza:

A file access.html a következő kódot tartalmazza:

Ha megjelölte a szkripteket a webhelyén tárolt oldalakon, átmásolhatja a JAR fájlt webhelyéről, és elhelyezheti egy másik webhelyen. Mivel a megjelölt szkriptek maguk nem változnak, továbbra is az Ön aláírásával dolgoznak.

Ha meg akarja akadályozni ezt a műveletet, akkor a szkriptek csak a webhelyéről működhetnek.

Ezután, ha a JAR fájl és a szkript egy másik webhelyre másolódnak, akkor nem fognak működni. Ha a parancsfájlt átmásoló személy megváltoztatja, hogy megkerülje a parancsfájl forrásellenőrzését, az aláírást elutasítják.

Legyen óvatos, amit exportál

Ha egy funkciót exportál a megjelölt szkriptről, valóban átadja a bizalmat minden olyan szkripthez, amely a funkcióját hívja le. Ez azt jelenti, hogy Ön felelős a nemkívánatos módon használható felületek exportálásáért. Például a következő program eval-hívást exportál. amely kiterjesztett jogosultságokkal működhet.

Megbízható kód alap minimalizálása

A biztonsági zsargonban a megbízható kódbázis (TCB) olyan kódkészlet, amely jogosultsággal rendelkezik a korlátozott részvények végrehajtására. A biztonság növelésének egyik módja a TCB méretének csökkentése. ami kevésbé teret enged a támadásoknak vagy hibáknak.

Például a következő kódot, ha a felhasználó jóváhagyásával megjelölt szkriptben hajt végre, új ablakot nyit meg a böngésző előzményeivel:

A TCB ebben a példában a teljes szkript, mivel az elején kerül kiadásra, és senki sem törli. Csökkentheti a TCB-t. újraírja a programot az alábbiak szerint:

Ezt követően a TCB csak egy hurok, amely hozzáférést biztosít a történelem tulajdonságához. A felesleges Java hívásokat kizárhatja. a kiváltság megváltoztatása a funkció beírásával:

A jogosultságok automatikusan megváltoznak, amikor a writeArray visszatéríti a vezérlést, ezért nem kell explicit módon végrehajtania.

A probléma megoldásához szükséges minimális mennyiség használata

A behatolás lehetőségének és a hibák előfordulásának csökkentésére szolgáló másik módszer az, hogy csak a szükséges minimális mennyiséget használják e hozzáférés eléréséhez. Például az előző kód a UniversalBrowserAccesst kérte. amely a UniversalBrowserRead és a UniversalBrowserWrite tartalmazó cél makró. Csak a UniversalBrowserRead szükséges a történelmi tömb elemeinek olvasásához. így átírhatja a fenti kódot, és biztonságosabbá teheti azt: