防止审计表被篡改

2024-01-01

我们的数据库中有审计表。 该表的记录是使用触发器完成的。

目前,没有什么可以阻止用户登录数据库服务器、从 Management Studio 打开表以及更改审计表中的数据。

有哪些可能的机制可以防止(或至少检测)审计数据篡改情况?

我正在考虑在审计表中添加一列,其中应包含一些根据该行中输入的值计算的哈希值。但是,由于审计是使用触发器完成的,因此恶意用户可以打开任何触发器并查看计算此哈希的逻辑。

EDIT:

我还不够清楚。应用程序用户无权访问数据库。我指的是像数据库管理员这样的用户,对数据库具有适当的权限。不过,如果这个数据库管理员登录并有权修改审计表,我希望至少有一些机制来检测这种篡改。


没有什么可以阻止某人通过 SQL 管理器访问您的数据库来更改内容。不过你可以让它显露出来。

基本上你需要使用HMACs http://en.wikipedia.org/wiki/HMAC它们是带键的哈希值。不幸的是,这会导致您需要密钥管理来确保密钥保密,而这在触发器中可能是不可能的。我们使用加密服务来提供密钥管理,但这是通过代码访问的。

您还需要考虑用户删除记录而不是更改其内容的能力。我们最终得到了两个 HMAC,一个使用记录的内容计算(以使对记录的更改变得明显),第二个使用当前记录 HMAC 和前一行的 HMAC 来使任何行删除篡改变得明显。

然后你需要担心删除第一条或最后一条记录。为此,我们使用始终具有相同内容的预告片和标题记录,如果这些内容不存在,则表的顶部或底部已被删除。标头的组合 HMAC 使用其后的记录而不是之前的记录(因为之前没有记录)。

当然,如果您要删除旧记录来管理存储的数据量,您将需要一种机制来在删除后添加新的标头记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止审计表被篡改 的相关文章

  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 项目构建失败:任务“compileDebug”在根项目中不明确

    当我将我的项目与梯度文件一切顺利 我明白了建设成功gradle 控制台上有消息 但是当我运行我的项目时 我收到以下消息 FAILED FAILURE Build failed with an exception What went wron
  • 在 JS 中使用 Bootstrap 颜色

    我正在使用 Google Chart 并希望将切片颜色设置为 bootstrap 使用的颜色 例如badge success or badge danger 有什么方法可以从 JavaScript 中访问这些颜色代码吗 如果您使用 Boot
  • web3 websocket连接阻止节点进程退出

    我有一个创建 web3 websocket 连接的 Node js 进程 如下所示 web3 new Web3 ws localhost 7545 当进程完成时 我向它发送一个 SIGTERM 它不会退出 而是永远挂起 没有控制台输出 我在
  • 有没有办法查看 XMLHttpRequest 检索到的最终 URL?

    我正在执行重定向的 AJAX 下载 我想知道请求重定向到的最终目标 URL 我正在使用 jQuery 但也可以访问底层的 XMLHttpRequest 有谁知道如何获取最终 URL 看来我需要让最终目标将其 URL 插入标头或响应正文中的已
  • 如何使 Chart JS 响应式?

    我正在使用 Chart js 和 Twitter Bootstrap 模板 如果我没有提及画布的高度和宽度 则图表的尺寸不正确 但如果我指定宽度和高度 那么图表就不会响应 我该如何解决这个问题 Chart js 有一个属性 响应式 您可以通
  • Bash:从 HTTP 响应中删除标头

    如果我有一些包含 HTTP 标头和正文的文本 例如 HTTP 1 1 200 OK Cache Control public max age 38 Content Type text html charset utf 8 Expires F
  • create_task = asyncio.async:语法错误:语法无效

    我正在为 Discord 创建一个机器人 我刚刚编写了这个简单的代码 import discord TOKEN token client discord Client client event async def on ready prin
  • WidgetsFlutterBinding.ensureInitialized() 的作用是什么?

    我正在尝试将 Firebase 包与以下代码行一起使用 我很想知道这行代码到底做了什么 官方文档对我没有太大帮助 有人可以帮我解释一下吗 你必须这样使用它 void main async WidgetsFlutterBinding ensu
  • 车辆牌照检测有哪些好的算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 背景 对于我在大学的期末项目 我正在开发一个车辆牌照检测应用程序 我认为自己是一名中级程序员 但是我的数学知识缺乏中学以上的知识 这使
  • App Store 版本号 - 更改方案/最佳实践

    我们正在考虑更改 iOS 应用程序下一个版本中的版本号 从使用传统的 Major Minor Patch 版本号方案改为使用基于日期的方案 例如 2012 month patch 以更好地向用户反映当前版本的版本号 该应用程序 Apple
  • 如何在 d3.axis.tickFormat 中换行?

    我想编写一个函数 返回带有两行文本的刻度标签 正如我所看到的 svg 文本标签用于文本标签 有没有办法在那里添加 tspan 或者其他什么 您可以访问由axis Demo http jsfiddle net k6b9j 3 d3 selec
  • Unity 3D 在一段时间内平滑地旋转对象

    我正在编写一个游戏 每次节拍器跳动时 立方体都必须围绕自身平滑旋转 90 度 每次节拍器跳动时 我的方法都会调用一个协程 IEnumerator moveCoroutine if isCollided canRotate for float
  • Unity Jenkins Android Gradle 任务:mergeReleaseResources 失败,命令行工作正常

    我正在尝试设置 Jenkins 服务器以自动构建 Unity 但出现 gradle 错误 使用命令行构建工作正常 但如果尝试使用 Jenkins 则会失败 Logs 失败 构建失败并出现异常 什么地方出了错 任务 mergeReleaseR
  • iOS 中的 URL 解码

    我正在使用 Swift 1 2 开发我的 iPhone 应用程序 并且正在与 http Web 服务进行通信 我得到的响应是查询字符串格式 键值对 和 URL 编码 Net 我可以获得响应 但正在寻找使用 Swift 进行解码的正确方法 响
  • Python 处理 URL 的用户名和密码

    搞乱Python 我正在尝试使用它https updates opendns com nic update hostname https updates opendns com nic update hostname 当您访问 URL 时
  • 如何让你的java应用程序自行重启[重复]

    这个问题在这里已经有答案了 我想实施reset我的应用程序中的功能可以清理一些目录 复制文件等 然后为了完成该过程 我需要重新启动它 如何让应用程序自行重新运行 我认为打开第二个实例并关闭这个实例就足够了 尽管这不是真正的重启 我的应用程序
  • 在 Objective-C 中解码 Base64 字符串 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 编写Python代码来计算几何级数

    我对编程和 Python 很陌生 我需要帮助编码一个几何级数 该级数应该计算级数 1 2 4 8 16 这是我到目前为止所拥有的 def work calc days worked n temp int 1 if days worked l
  • 如果 PowerShell 中的环境变量不存在,如何设置它?

    我很惊讶在谷歌搜索一段时间后我没有得到这种常见情况的答案 如果环境变量不存在 如何在 PowerShell 中设置它 下面的代码定义了环境变量FOO对于当前进程 如果尚不存在 if null eq env FOO env FOO bar I
  • 防止审计表被篡改

    我们的数据库中有审计表 该表的记录是使用触发器完成的 目前 没有什么可以阻止用户登录数据库服务器 从 Management Studio 打开表以及更改审计表中的数据 有哪些可能的机制可以防止 或至少检测 审计数据篡改情况 我正在考虑在审计