A tárolt XSS támadások és védelmi tőlük (eltávolítani a JavaScript HTML a böngésző)

Tárolt XSS-támadás

Cross Site Scripting támadás - a rosszindulatú szoftverek hatást gyakorol a felhasználó böngészőjének, hogy ellopja adatokat vagy egyéb kárt. Annak érdekében, hogy ne árnyékot vet CSS (Caskading Style Sheets), megállapodtak abban, hogy a rövidített formában váltja az első karakter kapott rövidítése: XSS -ataka.

A tárolt XSS-támadás - amelyekben a szkript hozzá egy az oldalra test (bemeneti formák - szöveges mezők, INPUT, contenteditable- elemek - fórumok, vendégkönyvek, stb.) Tedd egy üzenetet álcázott XSS-script van mentve (innen a név) helyén, majd amikor a rendszer kéri a felhasználók a fertőzött oldalak, és fuss támadásokat.

Változatok regisztráció a bevezetett XSS-kód lopás cookie-k
a címke .


Az eseménykezelő egy html-tag.

néhány szöveg

VÒdelem tárolt XSS támadások

A legegyszerűbb példa. A támadó bemutatja:


Az üzenet elküldése az északi. Szűrés a szerver „látja” a veszélyes karaktereket onmouseover és vágjuk. A végén, nem jelent semmilyen veszélyt (nem felismerhető böngészőt) oonmouseovernmouseover alakul onmouseover. azaz egy egyértelmű jelzés az esemény böngészők. Általában a tárolt XSS-támadás és végre: bevezetéséről terep szimbólum kombinációt küldik, figyeli, hogy mi történik a kimeneten. Ezután hogy feltételezések arról, hogy a szűrő működik, és elkezdődik a „harc” az ő pályára.

Annak érdekében, hogy teljes mértékben elismerik html a szerveren, meg kell html-értelmező, amely figyelembe veszi egészen a funkciók különböző változatai egy adott böngésző. Nem keresztezik, és a felső-böngésző elemző. A megoldás lehet bonyolultabb, mint maga a probléma.

Böngésző raktározott XSS támadások

Html-értelmezők valójában már van - a böngészők. Ezzel, a kísértés, hogy eltolja a feladat az elismerés tárolt XSS támadások (na jó, és a védelmet a számukra) a böngészők magukat. Akkor lesz felesleges előre a szerveren, hogy ha emellett egy fórum üzenetet aktív tartalmak Firefox, hogy van-e aktív tartalom az Internet Explorer, stb Logikusabb, hogy kérje a böngésző: „Te, Firefox, lásd a forgatókönyv itt?”. Vagy: „Te, az Internet Explorer, látható ez az üzenet aktív tartalmat?” Ha a böngésző - ez különösen beton, ez a verzió - talált egy script, akkor kiadja a parancsot, hogy semlegesítse a detektált böngészőt.

Biztonságos be- be a böngésző

Scripts kerülnek végrehajtásra a böngésző által az oldal betöltését. Még ha a szöveg egy részét láthatatlan vagy rejtett - ha van egy script, a script van kötve kell indítani. Néhány a html-tartály, amely megtiltja a szkriptek végrehajtását még nem találták fel (ha egy ilyen tartály feltalálta anyag tárolható az XSS-támadás nem állt elvben).

A letöltés után a böngésző jelölt számunkra a szöveget elemezni, védik őket, és akkor is csak a felhasználó láthatja. Esemény végének megfelelő az oldal betöltésekor, azaz, ez az úgynevezett onload. alkalmazható a tartály testéhez. Tehát a test oldalak a honlapon, legalábbis közülük azok, amelyek a felhasználó által hozzáadott tartalom kell válaszolnia, hogy a végén a letöltés:
.
ahol getid ( „üzenet”) - egy függvényt, amely veszi az ID a HTML-konténer, amelynek tartalmát elemezni kell, és semlegesítjük.

Funkció: választó töredékek

Hatodik felfedező válaszul document.getElementByClassName () termel egy tárgyat (nem objektumok gyűjteménye, mint várhatnánk). Meg kell alkalmazkodni egy nagyon gyenge, így megkapjuk szövegrészleteket, ahogy akar Explorer 6 - egyesével. Levonja még id. de ugyanakkor lehetővé teszi a több darab azonos id ugyanazon az oldalon. Ez a szabályok ellen, de kereszt-böngésző.

Semmi bonyolult, de minden sorban van egy magyarázat - a Titley (csak meg kell mozgatni a kurzort).

Funkció: Cleaner html

A módszerek és tulajdonságait a DOM, különösen, állíthatjuk elő:
- html-beágyazott tömb konténerek;
- a neve minden egyes beágyazott html-tároló;
- nevét minden jó tulajdonsága minden html-tartályba.
felvett fajok

div - a neve a HTML-tartály (csomóponthoz vagy csomópontokhoz.); és id = "a2". class = "MyClass". contenteditable = "true". align = "right". . style = "color: green". bebebe = "hi-hi-hi" - az ő tulajdonságait. Minden, ami meg van írva a címkére a form name = „érték”. Ez egy attribútum. Attribútum azonosítót és osztály és a stílust, és az eseménykezelő, és az értelmetlen típusú bebebe = „hi-hi-hi”. A DOM attribútumok szerint osztályozzák nevét és értékét. Kérni, és beszerzi a böngésző eseménykezelot attribútumok nem.

Alkalmazzuk a megközelítés „fehér lista” - kimerítő listát az engedélyezett címkék és attribútumok. Minden, ami nem felel meg a fehér listán, akkor könyörtelenül elpusztult. Algoritmus: végighaladni minden gyermek csomópontok, eltávolítva azokat, akik nem a kiadás listán, ugyanúgy rendezni minden jó tulajdonsága az egyes jóváhagyott webhely.

Magasabb rendű funkciók - array.forEach (), array.some () - nem értem, hogy alkalmazza, a hatodik Internet Explorer funkciók, mint nem érti. Tehetünk egyszerű ciklusokat. Ezen túlmenően, a hatodik felfedező bármely tag található egy teljes attribútumok (több tucat), még akkor is, ha nem attribútumok nem írt a tag. Ezért szükséges, hogy a pályaszakasz által meghatározott tulajdonság. hogy az egyes attribútum kifejezetten meghatározott.

Egy másik nehézség társított hatodik felfedező. Nem sikerült eltávolítani őt kezelő attribútumok eseményeket közös használat más böngészők node.removeAttribute ( „attrName”). Tüzek a felfedező számára a felvezető attribútum: node.attrName = null. azonban akkor lesz szükség, hogy ellenőrizze (legalábbis az első karakter „on”), hogy az attribútummal - egyébként szerezni sürgősségi Megszakítás script, amikor megpróbálta visszaállítani bármely nem visszaállítható attribútum (pl contenteditable).

Magyarázatok Titley. A koncepció a tag. csomópontot. html-konténer kifejezéseket szinonimaként használjuk.

Azok számára, akik szeretnék használni, anélkül, hogy részletezném értelmében meghatározott formában recept, amely alkalmas a gyors végrehajtásához.


weboldalt jelent a kiszolgálón:

Ironetcart