这是创建审计跟踪的最佳方法吗?

2023-12-13

我正在尝试创建一些功能,以保留给定用户表单中的数据如何随时间变化的审计跟踪,并在该页面的底部提供带日期的审计。例如:

02/04/09 21:49 名称从“Tom”更改为“Chris”。

我这样做的方法是将数据以其当前格式存储在会话中,然后在保存时检查所存储的数据是否存在任何差异。如果有,我会将最新编辑之前的数据存储在名为历史记录的表中,并将新值存储在当前用户表中。

这是最好的方法吗?


我不确定是否存在一种“最佳方法”,需要考虑很多变量,包括您的发展道路有多远。

在经历了基于代码和数据库触发的审计解决方案之后,我在下面列出了一些评论;我希望您能看到您现在所处的位置(在发展方面)可能会影响这些问题:

  • 如果您需要映射更改数据的用户(您通常会这样做),那么数据库触发器将需要以某种方式获取此信息。并非不可能,但需要更多工作和多种方法来解决此问题(数据库用户执行查询、每个表中的公共用户列等)
  • 如果您使用数据库触发器并且依赖于从查询返回的受影响行数,那么您的审核触发器需要将其关闭,或者修改现有代码以考虑它们。
  • 恕我直言,数据库触发器提供了更高的安全性,并提供了更简单的自动化审计路径,但是它们并不是万无一失的,因为任何具有适当访问权限的人都可以禁用触发器,修改数据,然后再次启用它们。换句话说,确保您的数据库安全访问权限严格。
  • 使用单个历史表并不是一个坏方法,尽管如果您要审计多个表的历史记录,特别是在重建审计跟踪时,您将需要做更多工作(以及要存储数据)。如果有许多表尝试写入一个审计表,您还必须考虑锁定问题。
  • 另一种选择是为每个表建立一个审计历史记录表。您只需要审计表中的每一列都可以为空,并存储操作(插入/更新/删除)的日期和时间以及与该操作关联的用户。
  • 如果您选择单表选项,除非您有很多时间花在这上面,否则不要太花哨地尝试仅审核更新或删除,尽管避免插入可能很诱人(因为大多数应用程序都这样做比更新或删除更频繁),重建审计历史记录需要相当多的工作。
  • 如果您的服务器或数据跨越多个时区,请考虑使用适当的日期时间类型来存储和重建时间线,即以 UTC 格式存储审核事件日期并包含时区偏移量。
  • 这些审计表可能会变得很大,因此如果它们开始影响性能,请制定策略。选项包括将表分区到不同的磁盘上、归档等。基本上现在就考虑这个,而不是当它成为问题时:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这是创建审计跟踪的最佳方法吗? 的相关文章

  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • 我想回显 __FILE__ 名称而不带路径。我只想页面名称,例如:index.php

    echo FILE 给我 C EasyPHP DevServer 13 1VC9 data localweb projects FOLDERNAME index php 我只想获取不带路径的文件名 我想单独获取index php 有任何想法
  • 如何在 PHPUnit 中跨多个测试模拟测试 Web 服务?

    我正在尝试使用 PHPUnit 测试 Web 服务接口类 基本上 这个类调用肥皂客户端目的 我正在尝试使用 PHPUnit 测试此类getMockFromWsdl这里描述的方法 http www phpunit de manual curr
  • 带数组的双美元变量

    我正在尝试使用双美元语法访问数组的第一项 但它无法按照我想要的方式工作
  • 使用 Coldfusion 分页

    是否可以仅使用一个查询在 Coldfusion 中分页并显示页数 我的理解是 您显然可以使用一个查询进行分页 但您需要一个额外的查询来创建页面 这是为了计算结果总数 currentPage 1 resultsPerPage Offset i
  • WSDL 中的数组响应 - SOAP PHP

    在我的 wsdl 代码中 我得到一个整数 我想返回数组中的结果 为什么在我的输入中我只有一个整数 而我需要数组中的结果 因为在我的 php 函数中 我想从客户端选择的整数中的数据库返回信息 例如 我的客户发送1 在我的php中 我从数据库中
  • 在 MySQL 5.6 中重置 ROOT 密码

    我一直在关注这些说明 http dev mysql com doc refman 5 6 en resetting permissions html用于重置root本地安装的密码MySQL 5 6在 Windows 7 笔记本电脑上 我停止
  • WooCommerce:在未登录用户的结帐页面中默认设置国家/地区

    如何将国家 地区设为常规 未注册用户 的默认国家 地区 但如果买家有个人账户并进入该国 他在结帐时不会被拖欠吗 我尝试过使用WooCommerce 在结帐页面中默认设置国家 地区 https stackoverflow com questi
  • Hibernate、MySQL 视图和 hibernate.hbm2ddl.auto = 验证

    我可以在 Hibernate 中使用 MySQL 视图 将它们视为表 即 该实体与为表创建的实体没有什么不同 但是 当 Hibernate 设置为验证模型时 我的应用程序将不会部署 因为它找不到视图 因为它假设它是一个表 是否可以在启用部署
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 如何解决错误:消息:fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)

    我在用着代码点火器我创建了一个电子邮件功能来将电子邮件发送到特定的电子邮件 ID public function email email config protocol smtp config smtp host ssl smtp gmai
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • 如何在 sqlSave() 命令中跳过主键?

    我正在尝试使用 RODBC 在 MySQL 数据库中插入 data frame 我正在使用的命令如下 sqlSave channel dbData tablename table name append TRUE safer TRUE fa
  • MySQL如何进行浮点加法的数学计算?

    我测试过SELECT 0 1 0 2 用MySQL MariaDB 查询 它返回了正确的答案 MariaDB none gt SELECT 0 1 0 2 0 1 0 2 0 3 1 row in set 0 000 sec 在大多数编程语
  • preg_match_all JS 等效吗?

    Javascript 中是否有与 PHP 的 preg match all 等效的函数 如果没有 将正则表达式的所有匹配项放入数组的最佳方法是什么 我愿意使用任何 JS 库来让它变得更容易 您可以使用match使用全局修饰符 gt gt g
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc

随机推荐

  • AVFoundation 重现视频循环

    我需要在 OpenGL 应用程序中无限期地重现视频 视频结束时重新启动 为此 我尝试利用 AV 基础 我创建了一个 AVAssetReader 和一个 AVAssetReaderTrackOutput 并利用 copyNextSampleB
  • 从文本中获取CGPath

    海吉同志们 我目前正在尝试将一个字母和 或多个字母转换为 CGPathRef 以便手动将它们绘制到自定义 UIView 中 我尝试了 CoreText 和 Framesetters 的方法 包括这个小片段 但它似乎不起作用 NSAttrib
  • 如何从 subprocess.communicate() 捕获 python 中的流输出

    目前 我有这样的事情 self process subprocess Popen self cmd stdout subprocess PIPE out err self process communicate 我正在运行的命令会流式传输输
  • 自动完成查找字符串包含的符号而不是开头的符号

    我正在编写一个程序 该程序在某一时刻实现了TextBox具有自动完成功能 目前 为了简单起见 我正在使用CustomSource在设计时手动填充多个条目 虽然自动完成工作正常 但我希望它提出的建议不仅仅是从 开始当前输入的文本 但是包含它在
  • Python在Words文档中查找替换字符串并在字符串之前创建两个段落

    我有一个 VBA 宏 在那方面 我有 Find Text Pollution Replacement Text p pChemical Here p pChemical 表示将 污染 一词替换为 化学 并在 海洋 一词之前创建两个空段落 B
  • 通过隐藏字段内的 ID 删除表行

    我有一个表 它在 JSP 中的 while 循环中生成其行 如下所示 我在每行中使用隐藏字段来获取特定 ID 并将其 POST 到 servlet tr td td tr
  • 优点、问题、向 iOS 应用程序添加另一个 UIWindow 的示例?

    最近我一直想知道 iOS 应用程序只有一个UIWindow 创建另一个似乎不是问题UIWindow并将其放置在屏幕上 我的问题有点模糊 但我感兴趣的是 第二次我可以实现什么目标UIWindow不能用其他方式做到吗 使用多个时可能会出现什么问
  • 使用 NEST 的 Elasticsearch:如何配置分析器来查找部分单词?

    我试图按部分单词进行搜索 忽略大小写并忽略某些字母的重音 是否可以 我认为带有默认分词器的 ngram 应该可以解决问题 但我不明白如何使用 NEST 来做到这一点 示例 musiic 应匹配包含 music 的记录 我使用的Elastic
  • 在VBA过程中使用ADODB查询Excel文件时,多个JOIN不可用吗?

    我有 3 张数据表 数据格式为表格 工作表名称为 Riesgos Eventos 和 Eventos Riesgos EventosRiesgo 拥有与事件和风险相关的信息 多对多关系 我试图获取来自 Riesgos 的所有风险 以及与来自
  • 如何在 TFS 构建中获取 nuget 恢复

    我无法让它工作 TFS 构建 这是 nuget 恢复问题 Nuget 不恢复引用 dll 文件 下面是我的构建配置 请告诉我如何才能使其发挥作用 As per 这篇博文在 Nuget 的网站上 您可以使用您提到的命令行 但它必须是使用Bui
  • 在 bash 中按特定顺序打印文件

    我有包含内容的文件 文件 txt Iteration 1 RAM 456ms Cache 142ms total 417ms Iteration 2 Spec 152ms Cache 149ms total 413ms Iteration
  • 调整字体大小后 Webview 高度不改变

    在我的应用程序中 我使用 ScrollView 这个ScrollView包含了很多Webview 我更改网络视图字体大小 webView getSettings setTextSize WebSettings TextSize LARGER
  • 使用 PKCS#8 编码的私钥创建兼容的 Java“RSA”签名

    我有 pkcs8 rsa private key 文件 它是由 openssl 从 rsa private key pem 文件生成的 我需要在python中通过私钥进行签名 使用下面的java代码进行相同的签名 public static
  • 面积图中的颜色变化

    我有一个扩展 AreaChart 的 Java 类 我想实现一种方法 或多或少是这样的 public void addNewColorToData xCoordinate yCoordinate redColor greenColor bl
  • 如何在普通 Python 3 中监听原始以太网帧?

    我正在用 Python 进行一些自学的低级网络编程 我在用着乌班图18 04 and Python 3 使用此代码 我可以发送原始以太网数据包 from socket import socket as Socket AF PACKET SO
  • 查找文本节点

    是否有一个聪明的 jQuery 选择器来选择这样的文本节点 div div
  • 如何从命令行获取正确的 Windows 版本

    如何从命令行 包括 PowerShell 获取正确的 Windows 版本 正如我尝试过的所有解决方案 答案如何从 PowerShell 命令行查找 Windows 版本 但现在没有人能够给出这个 您可以从注册表中检索它 gt e g 22
  • Java持久化API中FetchType LAZY和EAGER的区别?

    有什么区别FetchType LAZY and FetchType EAGER在 Java 持久性 API 中 有时您有两个实体 并且它们之间存在关系 例如 您可能有一个名为University另一个实体称为Student一所大学可能有很多
  • 如何在 Flutter 中使用 BottomNavigationBar 维护 Webview 状态

    我正在创建一个 Flutter 应用程序 它使用 BottomNavigationBar 在页面之间进行更改 在其中一个页面中 我有一个 Webview 我正在使用plugin由 Flutter 开发团队开发 当我导航到另一个选项卡然后返回
  • 这是创建审计跟踪的最佳方法吗?

    我正在尝试创建一些功能 以保留给定用户表单中的数据如何随时间变化的审计跟踪 并在该页面的底部提供带日期的审计 例如 02 04 09 21 49 名称从 Tom 更改为 Chris 我这样做的方法是将数据以其当前格式存储在会话中 然后在保存