Отраженный XSS в объекте Kendo DataSourceRequest - PullRequest
0 голосов
/ 26 февраля 2020

У нас есть следующее действие в контроллере для заполнения данных сетки Kendo

public ActionResult GetCompanyDetails([DataSourceRequest] DataSourceRequest request)
{
   var companyDetails = BusinessLayer.GetCompaniesDetail();
   return Json(companyDetails.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

Во время сканирования checkmarx вышеупомянутый метод был идентифицирован для уязвимости отраженного XSS.

Метод GetCompanyDetails в строке 1 файла wxy / xyz / Controllers / ABCController.cs получает пользовательский ввод для элемента запроса. Затем значение этого элемента проходит через код без надлежащей очистки или проверки и в конечном итоге отображается пользователю в методе GetCompanyDetails в строке 4 файла wxy / xyz / Controllers / ABCController.cs. Это может привести к атаке с использованием межсайтовых сценариев.

Как санировать объект DataSourceRequest request, чтобы решить эту проблему XSS?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Компонент Kendo. Mvc .UI Grid делает все возможное, чтобы предотвратить проблемы XSS путем кодирования содержимого во время рендеринга. По умолчанию Grid кодирует содержимое, отображаемое в ячейках, что означает, что если пользователь отправил сценарий, сценарий не будет выполнен, но будет отображаться как стандартный текст. Имейте в виду, что эту кодировку можно отключить. установив столбец. Закодированная конфигурация в false

columns.Bound(bank => bank.Website).Filterable(false).Encoded(false);

Предложенная отражающая уязвимость XSS полностью и полностью не может использоваться современными браузерами из-за следующего типа контента:

return Json(model.ToDataSourceResult(request), "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
0 голосов
/ 26 февраля 2020

Рекомендую прочитать: OW ASP Проверка CheatSheet .

Да, вам нужно проверить все имеющиеся у вас данные, формат, тип. Возможно, вам нужно проанализировать каждый элемент строки и преобразовать каждый в одну строку перед применением очистки. Другим решением может быть просто закодировать результат companyDetails.ToDataSourceResult(request). Это бой только XSS.

Но лучшим решением будет

  1. Подтвердить
  2. Кодировать

Этот бой снова Инъекция И XSS

...