Я хочу определить, пытается ли пользователь делать overposting attack в Asp.NET MVC.Как я могу обнаружить атаку overposting в ASP.MVC во время привязки модели?
Как определить, посылает ли кто-нибудь специальные значения (например, с помощью Fiddler) на мой контроллер?
Обратите внимание на «привязывать» ниже атрибут
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "LastName, FirstMidName, EnrollmentDate")]Student student) { try { if (ModelState.IsValid) { db.Students.Add(student); db.SaveChanges(); return RedirectToAction("Index"); } } catch (DataException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return View(student); }
атрибуте Bind является одним из способов защиты от перегрузок проводки в создания сценариев. Например, предположим, что объект Student включает свойство « », которое вы не хотите устанавливать на этой веб-странице.
public class Student { public int ID { get; set; } public string LastName { get; set; } public string FirstMidName { get; set; } public DateTime EnrollmentDate { get; set; } public string Secret { get; set; } public virtual ICollection<Enrollment> Enrollments { get; set; } }
Даже если у вас нет Секретный поле на веб-странице, хакер может использовать такой инструмент, как скрипача, или написать несколько JavaScript, чтобы опубликовать секретное значение формы. Без атрибута Bind, ограничивающего поля, которые использует связующее устройство , когда он создает экземпляр Student, привязка модели будет отображать это значение секретной формы и использовать его для создания экземпляра объекта Student . Затем любое значение, указанное хакером для поля секретной формы , будет обновляться в вашей базе данных. Следующее изображение показывает инструмент скрипача, добавляющий поле «Секрет» (со значением «OverPost») к опубликованным значениям формы.
Настройте ответ от Дарина ниже.В противном случае наилучшим вариантом будет использование службы брандмауэра для веб-приложений или веб-приложений - у них будет доступ к журналу, для чего вам нужно - для чего они нужны, и если ваше приложение не работает в одном бизнесе, вам небезразлично своя. Атаки в основном происходят из «везде» - все эти данные (источники атак) бесполезны, если вы не можете понять это ** и ** действовать на них соответственно - это то, что услуги делают для вас. Другая очевидная выгода заключается в том, что вашему приложению не придется выполнять «лишнюю» работу с ними. – EdSF