2010-11-04 7 views
0

В настоящее время я работаю над веб-приложением в ASP.NET, которое отображает отчеты (созданные с помощью SQL Sever BIDS), которые захватывают данные из базы данных SQL Server. Код находится в C#. Я делаю некоторые проверки безопасности, отправляя инъекции HTML в параметры отчета (только пару тегов будут делать это, например <i>text</i>). После того, как я нажимаю «Просмотр отчета» он штампует около половины второго, а затем выдает следующее сообщение об ошибке:HTML-инъекции в ASP.NET Report Viewer

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.

стек вызовов все функции анонимным Javascript. Я не писал некоторые из базового кода в этом проекте, поэтому мне трудно понять, как поймать ошибку: до он отправляется на сервер, если это возможно.

ответ

0

решаемые с помощью добавления следующего кода Javascript непосредственно ниже (не внутри) тег ReportViewer:

<script type="text/javascript"> 
     $("input").blur(function() { 
      ClientValidate(this); 
     }); 
    </script> 

где ClientValidate() это функция, которая удаляет HTML-теги с помощью регулярного выражения.

0

Не знаете, как выглядит ваш код. Возможно ли перехватить событие PreRender ReportViewer и проверить параметры отчета?

private void CheckReportParameters(LocalReport localReport) 
    { 
     foreach (ReportParameterInfo parameter in localReport.GetParameters()) 
     { 
      string parameterValue; 
      foreach (string value in parameter.Values) 
      { 
       // Take out offending characters or encode them 
      } 
     } 
    } 
+0

Это кажется очень перспективным. К сожалению, событие PreRender слишком поздно - ошибка вызывается перед ее вызовом. Я также пробовал OnLoad, тоже слишком поздно, и OnInit, который был слишком ранним (отчет еще не загружен). –