При разработке контроллера MVC ASP.NET следует учитывать атаки с подделкой межсайтовых запросов (CSRF). Атака с использованием подделки межсайтовых запросов позволяет отправлять вредоносные запросы от пользователя, прошедшего проверку подлинности, в контроллер MVC ASP.NET. Дополнительные сведения см. в разделе Предотвращение XSRF/CSRF на веб-страницах и в MVC ASP.NET.
Это правило проверяет, что методы действия контроллера MVC ASP.NET:
Для действий контроллера MVC ASP.NET, обрабатывающих запросы HTTP GET и не имеющих потенциально опасных побочных эффектов, добавьте HttpGetAttribute в метод.
Если у вас есть действие контроллера MVC ASP.NET, которое обрабатывает запросы HTTP GET и имеет потенциально опасные побочные эффекты, такие как изменение конфиденциальных данных, то приложение уязвимо к атакам с подделкой межсайтовых запросов. Вам придется переконструировать приложение таким образом, чтобы конфиденциальные операции могли выполнять только запросы HTTP POST, PUT или DELETE.
namespaceTestNamespace
{
using System.Web.Mvc;
publicclassTestController : Controller
{
public ActionResult TransferMoney(string toAccount, string amount)
{
// You don't want an attacker to specify to who and how much money to transfer.returnnull;
}
}
}
Решение.
C#
using System;
using System.Xml;
namespaceTestNamespace
{
using System.Web.Mvc;
publicclassTestController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult TransferMoney(string toAccount, string amount)
{
returnnull;
}
}
}
Пример атрибута HttpGet
Нарушение:
C#
namespaceTestNamespace
{
using System.Web.Mvc;
publicclassTestController : Controller
{
public ActionResult Help(int topicId)
{
// This Help method is an example of a read-only operation with no harmful side effects.returnnull;
}
}
}
Решение.
C#
namespaceTestNamespace
{
using System.Web.Mvc;
publicclassTestController : Controller
{
[HttpGet]
public ActionResult Help(int topicId)
{
returnnull;
}
}
}
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.