Ничто не может помешать кому-либо, имеющему доступ к вашей базе данных через диспетчер SQL, изменить содержимое.Однако вы можете сделать это очевидным.
В основном вам нужно использовать HMACs , которые являются хешированными ключами.К сожалению, это приводит к тому, что управление ключами требует сохранения секретности ключей, что может быть невозможно при триггерах.Мы используем криптографический сервис для обеспечения управления ключами, но доступ к нему осуществляется из кода.
Вам также нужно подумать о способности пользователей удалять запись, а не изменять ее содержимое.В итоге мы получили два HMAC, один из которых рассчитывался с использованием содержимого записи (чтобы сделать изменения в записи очевидными), второй - с использованием текущих записей HMAC и HMAC из предыдущей строки, чтобы сделать очевидным любое вмешательство в удаление строки.
Тогда вам нужно беспокоиться об удалении первой или последней x записей.Для этого мы используем трейлер и запись заголовка, которые всегда имеют одинаковое содержимое, если их нет, то верх или низ таблицы были удалены.Объединенный HMAC заголовка использует запись после него, а не запись до (так как ранее записи не было).
И, конечно, если вы собираетесь удалять старые записи, чтобы управлять количествомданные, которые вы храните, вам понадобится механизм для добавления новой записи заголовка после удаления.