<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV>This is my first post, so please excuse me in case there are any errors.</DIV>
<DIV>Consider the following .jsp sample. Not tested so there might be some mistake.</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>&lt;p&gt;Welcome to the site &lt;b id='boldStuff'&gt;dude&lt;/b&gt; &lt;/p&gt;</DIV>
<DIV>&lt;input type='button' onclick='changeText(&lt;=% get_data() %&gt;)' value='Change Text'/&gt;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&lt;script type="text/javascript"&gt;<BR>function changeText(my_data){&nbsp;document.getElementById('boldStuff').innerHTML = my_data;<BR>}<BR>&lt;/script&gt;<BR><BR></DIV>
<DIV>Here get_data is a function that brings untrusted input.</DIV>
<DIV>It goes into a javascript so needs to be encoded for Javascript.</DIV>
<DIV>But then it is alloted to an html element later using innerHTM, so it needs to be encoded for html.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Which one to choose ?</DIV>
<DIV>&nbsp;</DIV>
<DIV>If one chooses say javascript encoding only, what will happen if get_data() returns</DIV>
<DIV>&lt;script&gt; alert() &lt;/script&gt;</DIV>
<DIV>&nbsp;</DIV>
<DIV>and if the one encoodes only for html, what will happen if the&nbsp;get_data () returns</DIV>
<DIV>alert()</DIV>
<DIV>&nbsp;</DIV>
<DIV>Any advice will be much appreciated.</DIV>
<DIV>&nbsp;</DIV>
<DIV>regards,</DIV>
<DIV>Samir</DIV>
<DIV>&nbsp;</DIV></div></body></html>