<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
<br>Hello, I was having problems with the the dynamic DOM manipulation solution within certain browsers and I modified the javascript file to fix certain issues.<br><br>I propose that these changes are investigated if they are indeed useless:<br><br>In Firefox:<br><br>Issue: DOM flickering problem where all the text in the page is displayed for a very brief moment without any formatting.<br><br>Solution: I hide the body of the document before the token is injected into each tag and then redisplay it once all the tags are modified with the setTImeOut javascript function:<br><br>Code: <br>function injectTokens(tokenName, tokenValue) {<br>        <br>        <b>document.body.style.display ='none';</b><br>...<br><br>addEvent(window,'load', function() {<br>            injectTokens("%TOKEN_NAME%", "%TOKEN_VALUE%");<br>                });<br><b>addEvent(window,'load', function() {<br>           </b><b> setTimeout("document.body.style.display ='block'", 200);<br>        }); </b><br>...<br><br>In IE:<br><br>Issue: When accessing a page that contained the JavascriptServlet <script> tag, the form within the page was being resubmitted to the server after the page was already displayed. I am not certain but I believe that if you dynamically modify the action attribute of a <form> tag (or the src attribute of an <img> tag) the page is resubmitted only in IE. This was causing the token to be updated to a new value (if org.owasp.csrfguard.Rotate=true) different from the token contained in the links of the page that is already displayed. If you selected a link to a protected page from the displayed page that contained the  JavascriptServlet <script> tag, this would lead to an CSRF attack detection.<br><br>Solution: I ignored certain tags in the token injection function and also removed injecting a token attribute in the action attribute of a <form> tag. This will only work if images, scripts and css links are unprotected:<br><br>Code:<br>function injectTokens(tokenName, tokenValue) {<br>...<br><br><b>if(      element.tagName.toLowerCase() != "script" <br>   && element.tagName.toLowerCase() != "img"<br>   && element.tagName.toLowerCase() != "image"<br>   && element.tagName.toLowerCase() != "link")<br>{</b><br>      /** inject into form **/<br>      if(element.tagName.toLowerCase() == "form") {<br>       if(%INJECT_FORMS% == true) {<br>                        injectTokenForm(element, tokenName, tokenValue, pageTokens); // this should be enough for a form<br>                       <b> // injectTokenAttribute(element, "action", tokenName, tokenValue, pageTokens);</b><br> ...<br><b>}</b><br><br>I hope this can help certain users that have come across the same issues.<br><br>Daniel Fiore.<br>                                          </div></body>
</html>