我有一个数据库表,我想阻止用户修改值/行。我怎样才能做到这一点?
以下是一些标准:
- 要保护的表有一个单列,其中数据以纯文本形式存储。
- 如果需要,可以将其他列添加到表中以帮助保护单个列。
- 我的应用程序需要能够添加、编辑和删除表中的值/行。
- 对于这个问题,我假设用户对数据库具有完全和直接的管理员/读/写访问权限,即用户可以直接登录数据库执行查询。
- 如果用户直接在数据库中更改值,我的应用程序需要在检查表时标记这已发生。
- 数据库中还有其他表,但不需要以这种方式保护它们。如果需要,可以使用它们来帮助保护第一个表。
- 与数据库引擎无关的解决方案会很好,但我使用的是 SQL Server 2005 或更高版本。
例如:
假设我的表有 3 行数据“A”、“B”、“C”。我的应用程序应该能够将值更改为“A”、“B”、“D”,但不能更改我的用户(通过直接修改数据库)。此外,我希望如果我的应用程序将值更改为“A”、“B”、“D”,用户无法直接编辑表格以返回“A”、“B”、“C”。如果发生这种情况,应用程序将标记该表已被篡改。