Как дезинфицировать и проверять ввод пользователя для прохождения проверки Checkmarx в asp.net С#

При сканировании Checkmarx я получаю уязвимое ИСКЛЮЧЕНИЕ,

получает пользовательский ввод для элемента dr. Затем значение этого элемента проходит через код без надлежащей очистки или проверки и в конечном итоге отображается пользователю в методе.

 List<survey_bene> surveybenelist = new List<survey_bene>();
 cmd = new SqlCommand("SELECT ResondantCode FROM Respondant");
 DataTable dtdetails = vdm.SelectQuery(cmd).Tables[0];
 if (dtdetails.Rows.Count > 0)
 {
     foreach (DataRow dr in dtdetails.Rows)
      {
         survey_bene survey = new survey_bene();
         survey.resondantcode = dr["ResondantCode"].ToString();
         surveybenelist.Add(survey);
      }
 }

person user3755418    schedule 06.01.2021    source источник
comment
Какая строка в коде считается небезопасной? Этот код для сбора данных из UI или отправки данных в UI?   -  person Chetan Ranpariya    schedule 06.01.2021
comment
Survey.resondantcode = dr[ResondantCode].ToString(); в этой строке мы отправляем данные в пользовательский интерфейс   -  person user3755418    schedule 07.01.2021
comment
@user3755418 user3755418 о какой именно уязвимости вам сообщает Checkmarx?   -  person securecodeninja    schedule 10.01.2021
comment
Привет, Роман Канлас, получает пользовательский ввод для элемента dr. Затем значение этого элемента проходит через код без надлежащей очистки или проверки и в конечном итоге отображается пользователю в методе.   -  person user3755418    schedule 11.01.2021


Ответы (1)


На мой вопрос в комментариях точно не ответили, но я предполагаю, что это XSS-уязвимость. Если это не так, я соответствующим образом обновлю свой ответ.

Исходя из этого предположения, вы должны вызвать HtmlEncode работает либо из HtmlServerUtility или HttpUtility классы:

 List<survey_bene> surveybenelist = new List<survey_bene>();
 cmd = new SqlCommand("SELECT ResondantCode FROM Respondant");
 DataTable dtdetails = vdm.SelectQuery(cmd).Tables[0];
 if (dtdetails.Rows.Count > 0)
 {
     foreach (DataRow dr in dtdetails.Rows)
      {
         survey_bene survey = new survey_bene();
         survey.resondantcode = HttpUtility.HtmlEncode(dr["ResondantCode"].ToString());
         surveybenelist.Add(survey);
      }
 }
person securecodeninja    schedule 25.01.2021