DGKumar Ответов: 1

Как предотвратить сохраненную уязвимость xss для набора данных в ASP.NET


Привет Команда
Я пытаюсь предотвратить сохраненную вульгарность Xss для Sql-запроса, который показывает высокую уязвимость в Галочке.
Ниже приведен мой код.

Что я уже пробовал:

public DataSet GetData(string sqlQuery)
{
    OracleConnection con=new Oracle....
    OracleAdapter ad=new  OracleAdapter(sqlQuery,con);
    ad.Fill(ds);
    return ds;
}

Код пользовательского интерфейса
DataGrid dg=new DataGrid();
dg.DataSource = objDa.GetData(txtQuesy());
dg.Bind();

1 Ответов

Рейтинг:
2

Richard Deeming

У вас есть уязвимость с более высоким риском: вы написали метод, который заставит вас написать код, уязвимый для SQL-инъекция[^].

Вам нужно переписать свой GetData метод, позволяющий правильно передавать параметры, а не запихивать их в сам запрос. Вы также должны убедиться, что вы не принимаете запросы непосредственно от пользователя.

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

Многие элементы управления WebForms имеют свойства, которые позволяют указать, что их выходные данные должны быть закодированы. Например:
BoundField.Свойства Htmlencode (Системы.Веб.Пользовательского интерфейса.WebControls) | Майкрософт Документы[^]
Буквальный.Свойство Mode (System.Web.UI.WebControls) | Microsoft Docs[^]

До тех пор, пока вы используете эти свойства правильно и никогда не выводите некодированные данные, которые могут контролироваться или затрагиваться пользователем, вы должны избегать любых уязвимостей XSS.


Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]


DGKumar

Привет Ричард,
Даже несмотря на то, что если я использую параметризованный запрос также при получении данных из БД и попытке сохранить их в DataGrid DataSorce, флажок показывает, что данные источника данных не очищаются.
ДГ.Источник данных = ДС;

данные строки ДС должны santized. как это сделать, я не мог найти решения.

Richard Deeming

То компонента DataGrid[^] control-это более старый элемент управления, который не поддерживал автоматическое кодирование выходных данных.

Вам следует обратить внимание на переход на GridView[^] управление и настройка Функция htmlencode[^] собственность на BoundField столбцы.

Если вы будете придерживаться DataGrid, вам нужно будет переключиться на использование a TemplateColumn[^], и использовать привязку Literal внутри шаблона элемента с правильным Mode значение, установленное для обеспечения того, чтобы выходные данные были закодированы в HTML.