views:

402

answers:

1

In the HTML generated by the ReportViewer there is the following line of code (I've tried ot make it more readable by removing the superfluous information)

setTimeout("frames['ReportViewer1TouchSession0'].location.replace('/Reserved.ReportViewerWebControl.axd?...&TimerMethod=KeepAliveMethodReportViewer1TouchSession0...", 0);

function KeepAliveMethodReportViewer1TouchSession0() {   
setTimeout("frames['ReportViewer1TouchSession0'].location.replace('/Reserved.ReportViewerWebControl.axd?...TimerMethod=KeepAliveMethodReportViewer1TouchSession0....", -1703027296);
}

When the Reserved.ReportViewerWebControl.axd is called it makes a GET request that returns the following HTML:

<html><body><script type="text/javascript">parent.KeepAliveMethodReportViewer1TouchSession0();</script

So in effect it becomes a recursive function and because KeepAliveMethodReportViewer1TouchSession0 calls a set timeout with a negative timeout value, in Firefox it's called immediately, in about 10 seconds Firebug logs over 150 GET requests in one minute there are over 700 requests logged. This causes Firefox's Stop button and cursor to flicker like crazy.

If anyone knows how to adjust the timeout on the keepalive request so it's something sane I would greatly appreciate your help.

A: 

Not sure... but it's worth noting that this control exposes a cross-site scripting vulnerability through the TimerMethod parameter. Not too much documentation on the issue, but be careful. :)

CleverCoder