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
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: