torsdag 12 november 2009

JSTL + XSS = sant

JSTL, JSP Standard Tag Library, är ett taggbibliotek för att dynamiskt skapa HTML via JSP-sidor utan att skriva inline Java. En vanlig tagg är c:out som injicerar ett värde i sidan. Till exempel:

<c:out value="${address}"/>

Default-kodningen av utdata från c:out är XML vilket innebär att injicerat JavaScript i address skulle få skript-taggen kodad med &lt och &gt. Alltså säker mot cross-site scripting (XSS) ... eller?

<script>
...
<c:out value="${address}"/>
...
</script>

Om du använder c:out inuti ett skript-block så behövs inga skript-taggar i det injicerade skriptet. Alltså går det att göra XSS via JSTL. Läbbigt.

Inga kommentarer: