Другой ответ на самом деле не решает проблему, поскольку позволяет людям, имеющим доступ, по-прежнему быть злонамеренными и изменять записи, выходящие за рамки того, что разрешено в этом событии редактирования / обновления.
Сторона безопасностихорошая практика, однако для дальнейшей защиты вам лучше использовать первичные ключи GUID вместо 1, 2, 3, а также поле временной метки для проверки параллелизма.
Например, допустим, у нас естьМодель под названием Person, мы хотим убедиться, что когда она обновляется, она не только устарела (то есть кто-то побил нас ею), но мы также хотим убедиться, что это правильная запись, IE Concurrency: Предполагается, что здесь SQL-сервер.
public class Person{
[Timestamp]
public byte[] Timestamp { get; set; }
}
В нашем Создании модели Fluent API мы затем настроили бы метку времени в качестве идентификатора версии строки.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.Property(p => p.Timestamp)
.IsRowVersion();
}
Вместе с ключом GUID, они не только получили правильный GUID,но также нужно правильно настроить Rowversion.
Теперь вы не хотите пытаться разрешить параллелизм, как советовали повсюду, потому что, по сути, вам удалось найти другого гида и получить удар, теперь вы не хотите начинать копировать данныеиз одного безопасного источника в другой.Вместо этого вы можете либо перенаправить на исходную версию get (это повторно проверит разрешения и перезагрузить (с невозможностью обновить сообщение), либо вы можете просто сказать, что это не удалось. В любом случае, вы должны избегать говорить (хорошо, это было хорошо).угадайте другой GUID, но временная метка неверна). IE при входе в систему вы не сказали бы, что пароль неправильный, вы просто сказали, что вход не удался.
Для конечного пользователя это может быть проблемой в тылу, посколькувы не облегчаете им задачу, вы не обрабатываете параллелизм для них, не сопоставляете и не сортируете все данные для них, но вам нужно легче запоминать для пользователя = легче для плохого пользователя. Так же, как это уже не легкопрыгнуть на самолет, это не должно вас злить, это означает, что вы должны быть в безопасности, и вот правила.
Стоит думать о данных как о своей собственной сущности, безопасности системы, не должныбыть единственным способом защиты данных, пароли легко взломать, хешированные пароли легко взломать.взломать, а затем получить прямой доступ к системам.Это всего лишь одна часть. Вы должны защищать данные, даже от любой роли Бога или администратора, которую вы, возможно, выполняли.