Stocate XSS-atacuri și de protecție de la ei (elimina JavaScript din HTML pentru browser)

Stocate XSS-atac

Cross Site Scripting atac - un malware efecte software de pe browser-ul utilizatorului, în scopul de a fura date sau alte prejudicii. Pentru a nu arunca o umbra asupra CSS (Caskading Style Sheets), a fost de acord cu forma prescurtată va înlocui primul caracter primit abrevierea: XSS -ataka.

Stored XSS-atac - cele în care se adaugă script printr-o în corpul paginii (prin formulare de intrare - câmpurile de text, elemente de intrare, contenteditable- - forumuri, cărți de oaspeți, etc.). Pune într-un mesaj deghizat ca XSS-script este salvat (de unde și numele) site-ului, și apoi, când utilizatorii paginilor infectate vi se solicită, și atacurile executați.

Variante de înregistrare a XSS-a introdus codul fura cookie-uri
eticheta .


Într-o tratare a evenimentului într-un HTML-tag.

unele texte

Server de protecție stocate XSS-atacuri

Cel mai simplu exemplu. Atacatorul introduce:


Mesajul este trimis la nord. Filtru pe server „vede“ secvență de caractere periculoase onMouseOver și se taie. În cele din urmă, nu prezintă nici un pericol (nu browsere ușor de recunoscut) oonmouseovernmouseover se transformă în onMouseOver. și anume într-o indicație clară a browser-eveniment. În general, stocate XSS-atac și a efectuat: introducerea unui câmp simbol site-ul combinat este trimis, ma uit la ceea ce se întâmplă la ieșire. În continuare, face presupuneri cu privire la modul în care funcționează filtrul și începe să fie „lupta“ pentru combinația lui.

În scopul de a recunoaște pe deplin html pe server, este necesar html-parser, care va lua în considerare tot drumul până la caracteristicile diferitelor versiuni ale unui anumit browser. Nu se intersecteze și parserul sus browser. Soluția poate fi mai complexă decât problema în sine.

Browser protecție a stocate XSS-atacuri

HTML Derivatoare de fapt, deja este - browsere. Folosind acest lucru, este tentant să transfere sarcina de recunoaștere stocate XSS-atacuri (bine, și protecția acestora) pe browsere ei înșiși. Apoi va fi necesar să anticipeze pe server, a se vedea dacă în plus, pe un mesaj pe forum conținut activ Firefox, a se vedea dacă există conținut activ în Internet Explorer, etc. Este mult mai logic de a cere browser-ul: „Tu, Firefox, vezi scenariul de aici?“. Sau: „Tu, Internet Explorer, puteți vedea în acest conținut activ mesaj?“ În cazul în care browser-ul - acest special, concret, această versiune - a găsit un script, atunci puteți da ordinul de a neutraliza browser-ul detectat.

încărcare sigură în browser

Script-uri sunt executate de către browser-ul în timpul sarcinii paginii. Chiar dacă o bucată de text este invizibil sau ascuns - în cazul în care există un script, script-ul este obligat să fie lansat. Unele HTML-container, care interzice executarea de script-uri nu a fost încă inventat (în cazul în care un astfel de container stocat inventat indiferent de XSS-atacul nu ar fi stat în principiu).

După descărcarea, browser-ul ne-a marcat textul pentru a analiza, a le proteja, și apoi arată numai utilizatorul. Eveniment corespunzător sfârșitul paginii este încărcată, adică, este numit onload. aplicabil corpului recipientului. Deci, paginile de corp ale site-ului nostru, cel puțin, aceia dintre ei care au conținut adăugat de utilizator trebuie să răspundă la sfârșitul descărcării:
.
unde getid ( „message“) - o funcție care ia ID-ul html-container, conținutul care trebuie analizate și neutralizate.

fragmente elector: Funcție

explorator al șaselea ca răspuns la document.getElementByClassName () produce un obiect (nu este o colecție de obiecte, așa cum s-ar putea aștepta). Trebuie să se adapteze la o foarte slabă, așa că vom obține fragmente de text așa cum vrea el Explorer 6 - unul câte unul. Va trage încă la id. dar, în același timp, permițând o multitudine de piese cu același ID pe aceeași pagină. Acest lucru este împotriva regulilor, dar va cross-browser.

Nimic complicat, cu toate acestea, pentru fiecare rând există o explicație - în Titley (pur și simplu muta cursorul).

Funcție: Cleaner html

Folosind metodele și proprietățile DOM, în special, poate fi preparat:
- html-nested matrice de containere;
- numele fiecărui html-container nested;
- numele tuturor atributelor fiecărui HTML-container.
specii înregistrate

div - este numele html-container; (nod sau noduri.) și id = "a2". class = "MyClass". contenteditable = "true". align = "dreapta". . style = "color: verde". bebebe = "hi-hi-hi" - este atributele sale. Tot ceea ce este scris în tag-ul în forma nume = „valoare“. Este un atribut. Atribut va Identifier și de clasă și stil, precum și de tratare a evenimentelor, iar tipul de nonsens bebebe = „hi-hi-hi“. Atributele DOM sunt clasificate în funcție de numele lor și o valoare. Pentru a solicita și de a obține din browser-ul este atributele event-handler nu se poate.

Vom aplica abordarea „lista albă“ - o listă exhaustivă a permis tag-uri și atribute. Tot ceea ce nu corespunde lista albă, vor fi distruse fără milă. Algoritmul: itera peste toate nodurile copil, eliminarea celor care nu fac în lista de presă, în același mod de a sorta toate atributele pentru fiecare dintre site-urile aprobate.

Funcții de ordin superior - array.forEach (), array.some () - nu se ajunge să se aplice, a șasea caracteristici de Internet Explorer, cum nu înțelege. Putem face cicluri simple. În plus, al șaselea explorator pentru orice etichetă va găsi un set complet de atribute (câteva zeci), chiar dacă nu atribute nu au fost scrise în tag-ul. Prin urmare, este necesar să urmăriți specificată de proprietate. dacă fiecare atribut este definit în mod explicit.

O altă dificultate asociată cu al șaselea explorator. Nu se poate să-l elimine handler atribute evenimente folosind utilizarea comună pentru alte browsere node.removeAttribute ( „attrName“). Incendii în exploratorul pentru atributul handler este: node.attrName = nul. Cu toate acestea, atunci va fi necesar să se verifice (cel puțin pe primul caracter „pe“), dacă atributul handler - obține în alt script de întrerupere de urgență, atunci când încerca să reseteze orice atribut non-resetabil (de exemplu, contenteditable).

Explicații Titley. Conceptul de tag-ul. nod. html-container sunt utilizate ca sinonime.

Pentru cei care doresc să-l folosească, fără a adâncit în sensul stabilit sub forma unei rețete, potrivite pentru punerea în aplicare rapidă.


pagina site-ul de pe server:

Ironetcart