Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Feedback document cross-site-scripting

Pagina: 1
Acties:

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
Op dit moment ben ik bezig om een document te schrijven over cross-site-scripting. Het doel van het document is het creeëren van awareness, uit te leggen wat cross-site-scripting inhoudt en vertellen wat het gevaar hiervan is. Ook moet een breed publiek begrijpen wat er aan de hand is en wat er tegen gedaan kan worden.

Het onderstaande document is versie 0.2 (concept). De feedback van ervaren programmeurs zal de kwaliteit van het document mogelijk kunnen verhogen. Het final document zal gratis te verkrijgen zijn voor een ieder die hier interesse in heeft met als doel om webprogrammeurs er op te wijzen dat er meer gevaren op de loer liggen dan men wellicht verwacht had.

Gaarne jullie feedback en/of aanvullingen (op het gebied van oplossingen in andere webprogrammeertalen).

Nuttige feedback zal opgenomen worden in het document onder vermelding van degene die het heeft gemeld indien dit gewenst wordt.


Document: http://security.qualitysi...scripting-0.2-concept.pdf


Toestemming: whoami

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 14:31

djiwie

Wie?

Wat is de doelgroep van je paper? Programmeurs? Managers? Eindgebruikers? Wanneer programmeurs je doelgroep zijn is denk ik hoofdstuk 1 overbodig; zij weten immers al wat HTML is.

Verder vind ik het voorbeeld in paragraaf 4.4.1 slecht gekozen: er is een PHP-functie htmlspecialchars() die hetzelfde doet. Dan weet je ook zeker dat je niet een karakter kunt vergeten te escapen.

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
De doelgroep is een breed publiek, dus van beginners tot aan de programmeurs met meer ervaring. De reden dat ik htmlspecialchars() niet gebruik, is dat ik wil duidelijk maken wat er veranderd moet worden om veiligheid te garanderen. Men houdt hierdoor zelf de veiligheid in de hand en is niet afhandelijk van een functie die hiervoor zorg zou moeten dragen.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Verwijderd

In hoofdstuk 1 gebruik je incorrecte HTML-voorbeelden: het doctype ontbreekt, afbeeldingen missen het alt-attribuut en je gebruikt opmaak-tags welke deprecated zijn. Tevens heb je het over "URL (link) invoegen", waar ik gewoon "Hyperlink invoegen" zou hebben gebruikt.

In hoofdstuk 4 draag je het quoten van attribuutwaarden als oplossing aan. Dat is geen oplossing, want als ik het volgende invoer gaat het alsnog fout.

code:
1
Amsterdam" onMouseOver="<script>alert(document.cookie)</script>"


Tevens snap ik nog steeds niet, waarom je htmlspecialchars buiten beschouwing laat. Volgens mij is dat precies wat je als programmeur wilt: geen gedoe, maar één enkele functie die voorkomt dat HTML kan worden geïnjecteerd. Voeg dat toe als laatste paragraaf, dan weten de lezer wat het doet en waar ze het voor kunnen gebruiken.

Verder vind ik het een aardig document, hoewel ik iets bondiger en technischer zou schrijven. Maar dat hangt gedeeltelijk af van de doelgroep.

[ Voor 6% gewijzigd door Verwijderd op 06-04-2008 15:54 ]


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:13

MueR

Admin Devschuur® & Discord

is niet lief

In hoofdstuk 2 vertel je iets over onchange. Wat je beschrijft is echter onBlur.

Anyone who gets in between me and my morning coffee should be insecure.


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 14:31

djiwie

Wie?

Verwijderd schreef op zondag 06 april 2008 @ 15:51:
In hoofdstuk 1 gebruik je incorrecte HTML-voorbeelden: het doctype ontbreekt, afbeeldingen missen het alt-attribuut en je gebruikt opmaak-tags welke deprecated zijn. Tevens heb je het over "URL (link) invoegen", waar ik gewoon "Hyperlink invoegen" zou hebben gebruikt.
Uberhaupt vraag ik me af welk nut al die HTML-voorbeelden hebben, aangezien de voorbeelden in essentie allemaal gelijk zijn. De kern van XSS is dat je eigen HTML in de output probeert te stoppen en de oplossing is iets als alle output door htmlspecialchars() halen, daar heb je niet al die HTML-voorbeelden voor nodig.

By the way, als je de voorbeelden wilt behouden: doe het dan goed (volledig) of laat alleen de tags die je behandelt zien.
Verder nog even over de Javascript voorbeelden: misschien is een treffender voorbeeld om de cookies van een gebruiker te redirecten naar een andere site in plaats van een alert() met die gegevens. :)

Edit: deze zin loopt niet:
* Noot voor de kenners: De voorbeelden die worden weergegeven zijn sterk gesimplificeerd. Om duidelijker de nadruk te kunnen leggen op datgene wat van belang is..
Maak er dan iets van als:
* Noot voor kenners: de gegeven voorbeeld zijn sterk gesimplificeerd, om zo het belangrijkste te benadrukken.

[ Voor 14% gewijzigd door djiwie op 06-04-2008 18:21 ]


  • Hielko
  • Registratie: Januari 2000
  • Nu online
Men houdt hierdoor zelf de veiligheid in de hand en is niet afhandelijk van een functie die hiervoor zorg zou moeten dragen.
Dat is juist de oorzaak van veel security problemen; mensen die denken dat ze het wiel opnieuw moeten uitvinden, terwijl er al een oplossing bestaat die door honderden mensen gebruikt en getest is.

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
Verwijderd schreef op zondag 06 april 2008 @ 15:51:
In hoofdstuk 1 gebruik je incorrecte HTML-voorbeelden: het doctype ontbreekt, afbeeldingen missen het alt-attribuut en je gebruikt opmaak-tags welke deprecated zijn. Tevens heb je het over "URL (link) invoegen", waar ik gewoon "Hyperlink invoegen" zou hebben gebruikt.
Klopt, zoals aangegeven in de 'Noot' zijn de voorbeelden bewust simpel gehouden en de nadruk te kunnen leggen op datgene wat van belang is.

Vooral beginnende webprogrammeurs weten niet per se wat een hyperlink is. Maar alsnog bedankt voor de tip, ik zal deze in het document verwerken.
In hoofdstuk 4 draag je het quoten van attribuutwaarden als oplossing aan. Dat is geen oplossing, want als ik het volgende invoer gaat het alsnog fout.

code:
1
Amsterdam" onMouseOver="<script>alert(document.cookie)</script>"
Het quoten geeft aan dat je er voor moet zorgen dat de invoer ook daadwerkelijk als invoer gezien blijft worden. Quotes worden afgevangen door de oplossing geboden in 4.4.1.
Tevens snap ik nog steeds niet, waarom je htmlspecialchars buiten beschouwing laat. Volgens mij is dat precies wat je als programmeur wilt: geen gedoe, maar één enkele functie die voorkomt dat HTML kan worden geïnjecteerd. Voeg dat toe als laatste paragraaf, dan weten de lezer wat het doet en waar ze het voor kunnen gebruiken.
Goed punt, wellicht dat ik inderdaad beter kan aangeven dat er een functie is die dit afvangt en dat ik uitleg wat deze functie dan doet.
Verder vind ik het een aardig document, hoewel ik iets bondiger en technischer zou schrijven. Maar dat hangt gedeeltelijk af van de doelgroep.
Bedankt voor je feedback :)
MueR schreef op zondag 06 april 2008 @ 16:10:
In hoofdstuk 2 vertel je iets over onchange. Wat je beschrijft is echter onBlur.
True |:(. Zal ik aanpassen, merci.
djiwie schreef op zondag 06 april 2008 @ 18:18:
[...]

Uberhaupt vraag ik me af welk nut al die HTML-voorbeelden hebben, aangezien de voorbeelden in essentie allemaal gelijk zijn. De kern van XSS is dat je eigen HTML in de output probeert te stoppen en de oplossing is iets als alle output door htmlspecialchars() halen, daar heb je niet al die HTML-voorbeelden voor nodig.
De voorbeelden zijn vooral voor beginnende programmeurs gemaakt. Gevorderden lachen alleen maar om deze voorbeelden. De kern die je beschrijft, is inderdaad datgene waar het over gaat.
By the way, als je de voorbeelden wilt behouden: doe het dan goed (volledig) of laat alleen de tags die je behandelt zien.
Verder nog even over de Javascript voorbeelden: misschien is een treffender voorbeeld om de cookies van een gebruiker te redirecten naar een andere site in plaats van een alert() met die gegevens. :)
Lijkt me ook, zal ik aanpassen.
Edit: deze zin loopt niet:

[...]

Maak er dan iets van als:

[...]
Duidelijk, deze zin gaat aangepast worden. Ook bedankt voor de feedback!

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 98% gewijzigd door Ruudjah op 01-12-2009 22:52 ]

TweakBlog


  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
@Ruudjah: Merci, je haalt een aantal goede punten aan.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 13:37

sopsop

[v] [;,,;] [v]

Ruudjah schreef op zondag 06 april 2008 @ 19:20:
Njah, ik heb het doorgelezen en ik ben zelf niet echt into XSS. Dus inhoudelijk kan ik je helaas niet zoveel brengen. Wel kan ik als noot aandragen dat je een keuze moet maken in de taal die je gebruikt: Vertaal of alles naar het Nederlands, of gebruik consistent engelse termen. Voorbeeld:

[...]

Als je in de rest van het document vernederlandste termen gebruiikt, moet je ook 'input' correct en consistent vertalen naar 'invoer'. Input is geen Nederlands woord.


[...]
De Nederlandse taal bevat veel meer Engelse woorden dan je zou denken. 'Input' is daar een voorbeeld van, maar bijvoorbeeld ook 'viewer', 'keyboard' en 'joystick'. Deze woorden staan allemaal in de van Dale en hoeven derhalve ook niet vervangen te worden door een meer Nederlandse term als 'invoer', 'bekijker', 'toetsenbord' of 'vreugdeknuppel'.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Je bent het wiel opnieuw aan het uitvinden. http://www.owasp.org/index.php/Main_Page en specifiek http://www.owasp.org/index.php/Top_10_2007-A1 en allerlei links vanaf daar.

Wie trösten wir uns, die Mörder aller Mörder?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:55

Janoz

Moderator Devschuur®

!litemod

Wat ik eigenlijk een groot gemis vind in je document (waar ik wat snel doorheen gescanned ben) is dat je wel een beetje verteld hoe je html kan injecteren en vervolgens een beetje verteld over dat dit met javascript ook kan, maar alleen helemaal aan het einde heb je twee alinea's waarom cross site scripting meer dan 'lekker belangrijk' zou zijn. Om awareness te creeeren voor xss lijkt me dat onderdeel juist de hoofdzaak en de manieren waarop en hoe dit te voorkomen eerder bijzaak.


@sopsop:

Je hebt misschien gelijk met joystick, maar als je een document schrijft in het nederlands, gericht op een wat breder publiek, dan moet je je niet te veel in vaktermen verliezen. In de 'gewone mensen'-wereld het het nog steeds toetsenbord en invoer.

[ Voor 21% gewijzigd door Janoz op 07-04-2008 10:23 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Security = een state of mind. Alle variable die jij niet persoonlijk aanmaakt tijdens de executie van een script is in feite een mogelijke ingang voor een hacker. Hieronder vallen (vooral)Mysql, cookies, headers(referer iemand?, php_self idem).

Een veel gebruikte fout is het sanitizen van invoer naar mysql maar het inlezen word niet gechecked. Altijd doen.

Verder zie ik veelgebruikte attack vectors zoals eval en unicode attacks niet voorkomen in je document. Security is trendgevoelig, wil je sucesvol zijn in de beveiliging van websites zul je elke dag bij moeten leren want zovaak worden er nieuwe vectors ontdekt.

Naar mijn mening een leuk verhaaltje maar te subjectief om iemand eigenlijk bewust te maken. Als je het wat technischer maakt hebben de programeurs / designers er messchien nog wat aan, commercieële klanten haken al af bij de term XSS. Als je deze mensen wilt bereiken kom je gewoon aanzetten met scenario's die al zijn foutgelopen (myspace?).

[ Voor 23% gewijzigd door Verwijderd op 07-04-2008 10:52 ]


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:15

Sebazzz

3dp

Vergeet trouwens niet dat Google geen bron is. Tenzij je Google's Codebase ofzo hebt gebruikt, is Google geen bron maar de websites op Google. Script moet trouwens met type attribuut wat je wel vergeet. Als je iemand iets wilt leren, leer het dan wel goed.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 96% gewijzigd door Ruudjah op 01-12-2009 22:52 ]

TweakBlog


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 14:31

djiwie

Wie?

Sebazzz schreef op maandag 07 april 2008 @ 10:54:
Vergeet trouwens niet dat Google geen bron is. Tenzij je Google's Codebase ofzo hebt gebruikt, is Google geen bron maar de websites op Google.
Ook Google Code (zonder 'base', trouwens) is geen bron maar een verwijzing naar de broncode van verschillende open source projecten.

Sowieso mis ik specifieke verwijzingen naar artikelen in je bronnenlijst: de website van PHP is veel te algemeen. Verwijs dan door naar een artikel wat specifiek XSS-exploits uitlegt, mensen die dan verder geinteresseerd zijn in het onderwerp kunnen zich dan gemakkelijker verdiepen. Vergelijk het met een artikel over hongersnood in Afrika en dat je dan als bron het NOS Journaal aanhaalt, daar kan een lezer ook niet zo veel mee (je gaat niet alle uitzendingen van het journaal terug bekijken).

  • writser
  • Registratie: Mei 2000
  • Laatst online: 18-11 12:05
Eensch met bovenstaande. Bovendien heb je vrij lukraak wat termen gekozen. Google leg je wel uit, maar SQL, phishing of XSS niet. Kun je beter andersom doen :)

En laat de gehele HTML-introductie wat mij betreft achterwege. Je schrijft een document voor programmeurs lijkt me, die weten hopelijk wel wat <a> inhoudt. Maar goed, ik weet niet precies op welke doelgroep je je richt.

Verder is het best een aardig document. Leest makkelijk enzo. Maar zoals gezegd ben je het wiel overnieuw aan het uitvinden. Je kan ook de relevante wikipedia-pagina (Wikipedia: Cross-site scripting) lezen :)

[ Voor 37% gewijzigd door writser op 07-04-2008 17:51 ]

Onvoorstelbaar!


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Hoofdstuk 1.5: piet != Piet.

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Ziet er aardig uit. Eerste hoofdstuk heeft alleen een erg hoog 'duplo gehalte'.

/offtopic:
Heb ook nog even op je site gekeken en wilde even reageren op je bandbreedte verhaal (kon niet via je site). Ik wil het niet afkraken ofzo, je hebt er duidelijk over nagedacht en je best op gedaan, maar al die sites die jij aanhaalt maken gebruik van gzip compressie waardoor jouw hele verhaal niet opgaat.

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 16:56
Even minder inhoudelijk, de code velden worden hier niet goed weergeven in Foxit Reader v2.2
Pagina: 1