DGKumar Ответов: 1

Как предотвратить отраженная XSS-атаки для ViewState в в ASP.NET


Привет Команда,
У меня есть ViewState с данными и готовыми к хранению в Gridview.
Как предотвратить атаку xss на данные gridview?

DataSet ds = (DataSet)ViewState["GridData"];
ГВ.Источник данных = ДС;

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

Я пробовал использовать ViewStateEnabled = true и ViewStateEncryption = always.
Но все же я получаю checkmarx reflected xss not resolved.
Не могли бы вы, пожалуйста, помочь в этом типе проблемы, что, как исправить.

F-ES Sitecore

Вероятно, это просто жалоба, поскольку вы используете ресурс, который пришел от клиента без какой-либо кодировки. Проблема в том, как вы показываете данные в своем gridview, вы должны убедиться, что они не подвержены атакам xss, но если у вас есть шифрование viewstate MAC, я бы не беспокоился, я бы просто отключил предупреждение для этого раздела кода.

1 Ответов

Рейтинг:
1

Sandeep Mewara

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


Предотвращение атаки одним щелчком мыши:
void Page_Init(object sender, EventArgs e)
{
  if (Session.IsNewSession)
  {
    // Force session to be created;
    // otherwise the session ID changes on every request.
    Session["ForceSession"] = DateTime.Now;
  }
  // 'Sign' the viewstate with the current session.
  this.ViewStateUserKey = Session.SessionID;
  if (Page.EnableViewState)
  {
    // Make sure ViewState wasn't passed on the querystring.
    // This helps prevent one-click attacks.
    if (!string.IsNullOrEmpty(Request.Params["__VIEWSTATE"]) &&
      string.IsNullOrEmpty(Request.Form["__VIEWSTATE"]))
    {
      throw new Exception("Viewstate existed, but not on the form.");
    }
  }
}

Ссылаться: ASP.NET безопасность - обеспечение Вашей безопасности ASP.NET приложения | Microsoft Docs[^]