**Cross-site scripting (XSS)** segurtasun informatikoko ahulgune bat da, web aplikazioetan gertatu ohi dena. Ahulgune horren eraginez, erabiltzaile batek web orri batean kodea sar dezake, web orrialde horren jokaera aldatuz.

Segurtasun ahulgune hau web orrietan, web aplikazioetan eta nabigatzaileetan izan daiteke. Ahulgune horrekin erasotzaile batek web gunearen segurtasun politikak saihestu, informazioa aldatu, spam mezuak bidali eta informazio garrantzitsua lapurtu ditzake besteak beste.

XSS-a, web garatzaile askok kontuan hartzen ez duten ahulgune da, planifikazio txarra edo jakinduria falta dela eta. Ahulgune hau ematen da web guneetan informazio sarrerak iragazten ez dituztelako, honek edozein motatako datuak sartzea eta erasotzaileak edozein script exekutatzea ahalbidetzen du.

Ahulgune hau bi sailetan banatzen da: zuzeneko XSS eta zeharkako XSS.

Cross-site scripting
--------------------

### Zeharkako XSS (non-persistent)

XSS-mota hau ohikoena da eta web-aplikazioak bi orriren arteko aldagaien balioak aldatzean ematen da. Mezuan, cookiean, nabigatzailearen URL-ean, edo beste HTTP-aren edozein goiburuetan bide bat dagoenean gertatzen da.
Aldaketa hauek ez dira zerbitzarian gordetzen ("non-persistent").

```
javascript:while(true)alert("kaixo!");

```

Erasotzaile batek web orri batean aurreko kodea jartzen badu, biktimak etengabe "Kaixo!" mezua ikusiko du.

Horrela erasotzaileak web orri batean script egokia jartzen badu, berak nahi duen kodea exekutatuko da eta web orriaren jokaera aldatzea lortuko du.

### XSS zuzena (persistent)

Eraso mota hau kodea sartzean datza, HTML-a idazten baimentzen duten lekuetan <script> edo <iframe> etiketekin. Normalean zerbitzariak HTML formatuan testua gordetzen du eta gero erabiltzaileari erakustean, script-a exekutatzen da. Informazioa zerbitzarian gordeta geratuko da (persistent).

Adibidez, foro askotan erabiltzaileek mezuak HTML lengoaian idazten dituzte. Baita ere mezu elektroniko asko HTML lengoaian idazten dira , sare sozialetan ere datuak HTML formatuan gorde ahal dira. zerbitzariak testu hauek iragazten ez baditu, erabiltzaile bati informazioa erakustean erasotzaileak nahi izan duen edozein script exekutatu ahal da.

XSS Zuzena edo "Persistent" "Non-persistent" edo Zeharkako XSS baino gutxiago ematen da, izan ere, ahulezi hauek bilatzea ez baita batere erraza bestearekin konparatuz. Hala ere XSS zuzenak dituen eraginak askoz handiagoak dira. XSS zuzenak nahi duen "payload"-a web orrian ezarrita dagoenean, bisitatzen duten erabiltzaile guztiak kutsatuko ditu, aldaketak zerbitzarian daudelako eta ez url batean adibidez. 

Mota honen barruan DOM-aren erabilera txarragatik agertzen den azpimota "Lokala" aurkitzen dugu. JavaScript-ekin, kode maleziatsuarekin orri berri bat irekitzea baimentzen du, lehenengo orriari sistema lokalean txertatutako JavaScript-arekin. Kode hauek dira zerbitzarietan erabilitako iragazkietan iragazi ez direnak, izan ere aldaketak bezeroan eman direlako.

Cross-site scripting-en aurka
-----------------------------

### XSS iragazketa

Normalean web orrietan ezin da JavaScript kodea idatzi programatzaileak kontuan izan duelako ahulgune hau eta iragazketak egiten dituelako.

’ eta "karaktereen ordez \’ eta \" karaktereak jartzen dira (escaping), iragazketa horrek sql iragazketarako erabilgarria delako soilik, eta Javascript kodea sartu ahal egingo da.

```
<input type="text" name="bilaketa" value="" OnFocus="alert('Kaixo!');" />

```

"<", ">" eta "script" hitzen iragazketak ez du horrelako karaktereak idaztea baimentzen formulario baten barruan. Hala ere kodea sartu ahal da, ekitaldien bidez gohian ikusten den bezala. Beste tresna batzuk ere erabil daitezke iragazketak egiteko halaber Microsoft-en anti-XSS, Owasp-en ESAPI, Apache Wicket...

### Cookien segurtasuna

Web-aplikazio askok cookietan oinarritzen dira HTTP eskaeren arteko kautotasunarako. Bezeroaren aldean XSS-a sinpleek cookieak lapur ditzakete. Nahiz eta XSS arazoa ez izan, hau ekiditzeko web-aplikazio askok saio-cookieak sartu zituzten erabiltzailearen IP helbideari lotuta, IP-a cookie hori soilik erabiltzera behartuz. Beste erabiltzaile batek cookie hori beste IP batekin erabiliz gero ez dio utziko.

### Script-ak ezgaitzea

2.0 Web diseinatzaileek eta Ajax-ek Javascript-en erabilera bultzatzen dute, berriz web-aplikazio garatzaile batzuek kontrakoa defendatzen dute, guztiz bezeroaren aldeko scripten beharrik gabe operatzea. Honek erabiltzaileak baimentzen ditu, nahi badute, bere nabigatzailearen scriptak ezgaitzera. Modu honetan bezeroaren aldeko script arriskutsuak ez lirateke sartuko eta ez litzateke XSS erasoa emango.

Nahiz eta segurtasun aldetik babestuago egon, web orri batzuek ezin dute JavaScript gabe funtzionatu. HTML lengoaian noscript etiketa erabiltzen da erabiltzaileari jakinarazteko orriak ez duela funtzionatuko JavaScript-ik gabe.

```
<noscript>
  <p>Ongi etorri!</p>
  <p>Web orri honek Javascript behar du ondo bistaratzeko.</p>
</noscript>

```

Kanpo estekak
-------------

* **(Ingelesez)** Internet security
* **(Ingelesez)** Metasploit Project
* **(Ingelesez)** Persistent Cross-site scripting. Description of Persistent / Stored Cross-site Scripting.
* **(Gaztelaniaz)** Como funciona el XSS. XSS Attacks.
* **(Ingelesez)** What Is Web 2.0.
* **(Gaztelaniaz)** Etiqueta noscript.
* **(Gaztelaniaz)** Introducción a JavaScript.