Įterptinių instrukcijų atakos (Cross-site scripting(XSS))
Dauguma šiuolaikinių internetinių svetainių yra dinamiškos, taigi vartotojui naršymas tampa ženkliai malonesnis. Dinamiškumas įgyvendinamas serverio procesais kurie parsiųsti į vartotojo kompiuterį yra vykdomi ir priklauso nuo vartotojo poreikių ir nustatymu. Dinaminės sistemos, skiriasi nuo statinių ir jas gali pažeisti įterptinių instrukcijų atakos (ang. cross-site scripting).
XSS (Cross-Site Scripting) pažeidžiamumas leidžia įsilaužėliui įterpti naršyklėje vykdomą kodą į kitų vartotojų peržiūrimą Web puslapį. Šiomis dienomis tai ypač dažnai išnaudojamas pažeidžiamumas. XSS išnaudojimai paprastai remiasi tos pačios kilmės politikos koncepcija (Same Origin Policy)[3], kuri iš esmės leidžia tik to paties puslapio resursams sąveikauti tarpusavyje be jokių specialių apribojimų. XSS atakos metu savavališkai įterptas kodas yra vykdomas nieko nenuotuokiančio vartotojo naršyklėje, šis kodas paprastai naudojasi papildomomis privilegijomis (pagal tos pačios kilmės politiką). XSS yra išnaudojamas tokiems tikslams, kaip vartotojo sesijų užgrobimas (session hijacking), Web puslapių sudarkymas, kenkėjiško turinio įterpimas, vartotojų nukreipimas į kitus puslapius/turinį ir pan. Išskiriami trys XSS pažeidžiamumų tipai:
- Atsispindintis (reflected arba non-persistent) – įterptas kodas „atsispindi“ Web aplikacijoje. Dažniausiai toks kodas yra siunčiamas HTTP užklausos parametre, o Web aplikacija savo ruožtu, nepakankamai apvalydama šiuos parametrus, jį grąžina kliento naršyklei. Galiausiai kodas yra įvykdomas vartotojo naršyklėje.
- Išsaugotas (stored arba persistent) – įterptas kodas yra išsaugojamas Web aplikacijoje (paprastai duomenų bazėje) ir neapvalytas yra grąžinamas kliento naršyklei. Tradicinis šiam pažeidžiamumui taikomas pavyzdys yra interneto forumai, kuriuose vartotojams leidžiama savo žinutėse įterpti HTML kodą. Pažeidžiama Web aplikacija, neišskirdama neleistinų HTML gairių, suteikia galimybę išsaugoti naršyklės kodą ir pateikti jį vykdymui kitiems vartotojams. Tokio tipo pažeidžiamumų išnaudojimo rezultatai yra labiau niokojantys – dažnai specialiai sudarkomas Web puslapio turinys, vartotojai nukreipiami į kitus žalingus puslapius ir pan.
- DOM tipo XSS (DOM Based XSS) – įterptas kenkėjiškas turinys yra naudojamas DOM (Document Object Model)[6] manipuliacijose. Tradiciškai DOM yra naudojamas klientų pusės scenarijuose (Javascript) sąveikai su puslapio turiniu ir charakteristikomis. Išnaudojant DOM tipo XSS pažeidžiamumus dažniausiai manipuliuojama šiais DOM parametrais: document.referer, window.name, location.
Diagrama apibūdinanti Cross Site Scripting (XSS) ataką

Kaip apsisaugoti?
Apsisaugojimui nuo XSS yra aktyviai naudojamos išvesties ir jau minėtos įvesties filtravimo technikos. Pirmas apsisaugojimui skirtas žingsnis yra identifikuoti atvejus, kada vartotojo kontroliuojama įvestis yra grąžinama kaip atsakymas kliento naršyklei. Dauguma tinklalapių aplikacijų, kurios neleidžia vartotojams naudoti laisvai pasirinkto HTML, CSS kodo, turėtų naudoti išskyrimo (escape) funkcijas atitinkamiems specialiems simboliams bei gairėms. Verta paminėti, kad šie apsisaugojimo būdai dažniausiai būna nepakankami, tobulėjant ir augant technologijoms, tobulėja ir XSS išnaudojimų technikos, todėl sudėtingesnėms interaktyvioms Web aplikacijoms rekomenduojama naudoti saugaus duomenų kodavimo bibliotekas, tokias kaip HTML Purifier. Daugiau apie apsisaugojimą nuo XSS galite paskaityti OWASP išleistame dokumente „XSS (Cross-Site Scripting Prevention Cheat Sheet“[6].