我有一个数据库表,我想阻止用户修改值/行。我怎样才能做到这一点?如何防止用户更改数据库表中的值/行?
这里有一些标准:
- 要保护的表具有与存储在纯文本数据的单个列。
- 如果需要帮助保护单列,可以将其他列添加到表中。
- 我的应用程序需要能够添加,编辑和删除表中的值/行。
- 对于这个问题,我假设用户具有对数据库的完全和直接的管理/读/写访问权限,即用户可以直接登录数据库执行查询。
- 如果用户直接在数据库中更改值,我的应用程序需要在检查表时发出这种情况。
- 数据库中还有其他表格,但它们不需要以这种方式保护。如果需要,可以使用它们来帮助保护第一张桌子。
- 数据库引擎不可知的解决方案会很好,但我使用SQL Server 2005或更高版本。
例如:
比方说,我的表有3行数据 “A”, “B”, “C”。我的应用程序应该能够将值更改为“A”,“B”,“D”,但不是我的用户(通过直接修改数据库)。此外,我预计如果我的应用程序将值更改为“A”,“B”,“D”,则用户无法直接编辑表格以返回到“A”,“B”,“C”。如果发生这种情况,应用程序将标记该表已被篡改。
这可以全部在应用程序内部进行控制,所以除非你给你的用户直接访问数据库,否则你应该没有问题。如果你的用户有直接的数据库访问权限,你可以调整用户拥有的权限。有些RDBMS在列级支持权限以及审计,所以如果做出任何更改,您将会知道。不知道你正在使用哪个RDBMS,问题的这一部分很难回答。 – NullUserException
数据库引擎不可知的解决方案会很好,但我使用SQL Server 2005或更高版本。我假设用户有直接的数据库访问权限,可以修改数据库中的任何内容。 – sparks
您是否在意用户是否间接修改数据库,例如通过编写自己的应用程序或使用Access,Excel,...?您只想防止使用SSMS所做的更改? – HABO