Xss staat voor cross site scripting, dus zou het eigenljk css moeten heten. Omdat css ook al een afkorting is voor cascading style sheet, heeft cross site scripting de naam xss gekregen.

Werkwijze van de hacker
Hoe gaat een xss hacker (of cracker, of scriptkiddie, hoe je het wil noemen) nou precies te werk?
Als eerst kijkt hij, wat voor karakters het filter doorlaat, wat voor karakters hij ombuigt, en wat voor karakters hij compleet weghaalt.

Dat gebeurt meestal met een kleine localizer, voorbeeld:

<xss>' "{}();

Nu kijkt de hacker wat voor tekens het filter doorlaat.
als de broncode bijvoorbeeld:

<xss>\'\"{}();

Zou bevatten, weet de hacker dat addslashes aan staat, en dat html niet gefilterd word.
Een simpele <script> met javascript zal nu sesies kunnen stelen, en hem toegang tot andere accounts kunnen geven.

Zo gaat de persoon in kwestie een tijdje door, tot hij precies snapt wat het filter doet, en wanneer.
Dan is de volgende stap, het werkend krijgen van de hack. dit kost vaak maar een paar minuten.

Als een filter bepaalde (voor de hacker nuttige) tekens filtert, dan kijkt de hacker wat hij WEL kan doen, de veiligheid van een website is ALTIJD de minst veilige pagina!


Hoe voorkom je xss?
Xss is eigenljk heel makkelijk te voorkomen, als je er voor zorgt dat alle input van de gebruiker word gefilterd, en het filter is GOED, dan is xss onmogelijk..

Maar wat is een goed filter?

Er zijn vele soorten filters, maar meestal zijn ze onder te verdelen in 2 categorien, de html filters, en de bb filters.

Met html filters bedoel ik filters, die opmaak van de pagina toestaan, doormiddel van html tags.
Het is hier zaak, om er voor te zorgen, dat die tags niet schadelijk kunnen zijn voor de beveiliging van de website, dus, er mag geen javascript/vbscript of wat voor script dan ook worden uitgevoerd.

BB filters zijn de filters die van onschuldig ogende tags [img] een complete img tag maken. deze filtes zijn heel nuttig, omdat het teken [ voor de browser niks zegt, dus als je een foutje maakt, en een [ word niet vervangen, is dat geen ramp.



Wanneer is een filter een veilig filter? (html+bb)
zoals ik hierboven al heb verteld, is een filter veilig, als er geen javascript/vbscript kan worden gegenereerd door de hacker.

Maar wat voor dingen moet ik nou filteren, om hier voor te zorgen?
allereerst: natuurlijk de html tags: < en >, die mogen alleen bij een html filter aanwezig zijn, maar zorg er dan wel voor, dat de tags kloppen!
geef dus niet aan wat niet mag, maar wel wat WEL mag, en vervang de rest, dat bespaart je een hoop tijd.

Ten tweede:
In een tag, waar mogelijk javascript kan worden uitgevoerd: script, a href, img, style, object, body, style, input(welke dan ook!) en meta, mogen GEEN karakters als: :, ;, ', ", [, ], #, (, ), \, {, } voorkomen.
van veel van deze karakters zal je denken: ah, die zijn onschuldig, zoals de [], of de #.. maar schijn bedriegt!
maak maar eens een kleine html pagina aan, met deze img tag:

<img src="&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#88&#83&#83&#39&#41&#59">
dit is dus gewoon javascript in een image tag gegoten!


Als de gebruiker dat soort karakters toch zou moeten kunnen gebruiken, htmlspecialchar dan de pagina, dat zorgt ervoor, dat bijna alle onveilige karakters worden vertaald naar hun ascii aanhanger.
0
Word fan
Delen
Ongewenst

Laat een reactie achter

+0 -0- x

Tim schreef op 29 Dec 2009 om 16:27

Hoi, leuk artiklen hoor :) weer wat bij geleerd

Reageren?

Registreer of log in om te reageren op een artikel.
Dit artikel bevat:
Toelichting: