Er mist een > op het eind. Dan zal wel de troubles in het renderen (opbouwen) van de HTML-elementen veroorzaakt hebben. Geen XSS dus, dat is ook niet iets voor het bekende SoundCloud.
Geen XSS dus, dat is ook niet iets voor het bekende SoundCloud.
Laat ik het anders verwoorden: de huidige opzet stelt XSS in staat. Het feit dat het aan een "veilige" bron refereert is niet echt relevant. Dit soort sites kunnen ook misbruikt worden voor dit soort aanvallen dus wat dat betreft zou je geen enkele externe bron zondermeer moeten vertrouwen.
Zoals @Frank aanhaalt dient je output veilig te zijn, ontdaan van mogelijke JavaScript fratsen. Dus tenzij je de auteurs van deze berichten vertrouwt en ook kunt identificeren, is het wellicht beter om een andere manier te vinden om hetzelfde te bereiken. Bijvoorbeeld door een soort van UBB-tag: [soundcloud]skelermusic/ava[/soundcloud], waarbij jouw systeem zelf de omzettingen naar iframes et cetera verzorgt, zodat de controle aan jouw kant ligt.
En zo'n aanpak heeft meteen een ander pluspunt: nu is het zo dat als iemand een sluitingshaak mist dat dan je hele site in puin ligt. Als je alle output onschadelijk maakt en deze zelf verzorgt gebeurt dat ook niet meer.
Het verhaal komt mij bekend voor, ben dit probleem in een grijs verleden al eens tegengekomen. Het probleem komt weg uit het feit dat je statische html binnen de dynamiek van een php-script probeert te mixen en dat komt niet goed want er wordt van de diverse uitkomsten slechts de eerste mogelijkheid weergegeven in jouw opzet van het verhaal.
Als je de opzet wijzigt van html naar een php echo met toevoeging van een voorafgaande while loop wordt het een handelbaarder verhaal
Het probleem komt weg uit het feit dat je statische html binnen de dynamiek van een php-script probeert te mixen
Nou nee, meer het feit dat je niet uit kunt gaan van een kloppende syntax. En daarbij heb je geen controle over wat dit vervolgens doet (AJAX-calls die cookies stelen et cetera).
Yoop Overmaat op 24/02/2020 18:12:46
en dat komt niet goed want er wordt van de diverse uitkomsten slechts de eerste mogelijkheid weergegeven in jouw opzet van het verhaal.
Dit volg ik niet.
Yoop Overmaat op 24/02/2020 18:12:46
Als je de opzet wijzigt van html naar een php echo met toevoeging van een voorafgaande while loop wordt het een handelbaarder verhaal
Dit maakt niet zoveel uit denk ik. PHP en HTML zijn en blijven onlosmakelijk met elkaar verbonden. Dit is enkel een (abstractie)laag die je hier tussenmetselt, het resultaat blijft hetzelfde. Bedoel je met bovenstaande quote het (verder) scheiden van logica en weergave? Je zult dan nog steeds een knoop moeten doorhakken over wat de content uiteindelijk mag doen. Volledige HTML weergeven? Beperkte HTML weergeven? Enkel platte tekst?
Het escapen van alle output, het beperken van de HTML-mogelijkheden of dit compleet verbieden door gebruikmaking van een surrogaat (UBB-achtige tags) gaat je waarschijnlijk een stuk verder helpen. Of een WYSIWYG-editor die je op de vingers tikt of simpelweg niets doet wanneer je deze ongeldige HTML probeert te voeren, maar dan heb je dus nog steeds het probleem van de mate van betrouwbaarheid van de bron.
Dit is een afweging die de topicstarter zal moeten maken en op grond daarvan zullen beperkingen qua output-functionaliteit opgelegd moeten worden.