Veiligheidsgids · Veilig vibecoden
Als invoer van gebruikers als HTML wordt getoond, kan een aanvaller code uitvoeren in de browser van anderen.
Bij XSS wordt tekst die een gebruiker invoert, bijvoorbeeld een reactie of profielnaam, als HTML in de pagina gezet. Bevat die tekst een script, dan draait dat in de browser van elke bezoeker, met toegang tot hun sessie.
Moderne frameworks zoals React ontsnappen tekst standaard. Het gaat mis bij uitzonderingen: innerHTML, dangerouslySetInnerHTML en het tonen van markdown of AI-output als HTML.
Via innerHTML of dangerouslySetInnerHTML voer je elk script uit dat erin staat.
Een model kan via prompt injection worden overgehaald om HTML met scripts terug te geven.
Een door gebruikers opgegeven URL kan javascript: bevatten en code uitvoeren bij klikken.
React zet tekst tussen accolades om naar veilige tekst. Gebruik dangerouslySetInnerHTML alleen voor inhoud die je zelf beheert of eerst hebt gesanitized.
Loop dit na voordat je verder gaat of iets online zet.
// Een reactie met <img src=x onerror=...> voert code uit
<div dangerouslySetInnerHTML={{ __html: comment.text }} />// React ontsnapt tekst automatisch
<div>{comment.text}</div>