php - 如何做php网页和mysql数据库的审计日志?

标签 php mysql

我的网页是用 PHP 编码的,并链接到 MySQL Server Management Studio 数据库。该网页的主要功能是允许用户通过该网页搜索数据库中的数据。我想创建一个搜索日志来跟踪用户事件(谁、什么、他们搜索的时间以及他们得到的结果)。我该怎么做?

对于管理员来说,他们拥有从数据库表中添加、删除、编辑数据的权限。我想创建一个审计日志来捕获添加、删除或编辑的日期时间、用户 ID、旧值、新值和字段等。

由于我是新手,感谢大家的帮助。提前谢谢你。

最佳答案

构建您自己的审计跟踪可能存在隐藏的问题和注意事项

  1. 记录有关新值和/或旧值的详细信息可能会对您的数据库和服务器产生负面影响 - 假设您试图在一秒钟内保存数十条审计记录,而更新的字段是巨大的 blob 或文本字段。因此,考虑出于审计目的或仅在必要时进行审计而截断数据。
  2. 考虑审核比您现在想要的更多的细节。例如,可能的其他审计字段可以包括 IP 地址。
  3. 还要考虑审核搜索/查看 - 用户是否只是搜索了某些内容也很有帮助。

假设这个结构可以解决问题:

CREATE TABLE audit_trail (
    id int not null primary key auto_increment,
    user_id int not null,
    action_time datetime not null,
    action_performed enum ('view','add', 'edit', 'delete'),
    table_affected varchar(50) not null, -- table of affected item
    item_affected int not null, -- supposing every table has it's own id key
    old_value varchar(1000), 
    new_value varchar(1000)
)

如何存储旧值和新值 - 由您决定。首先认为自定义审计日志不适合恢复返回值(mysqldump 和其他实用程序来救援)。但通常它足以存储旧值和新值的短字符串表示(这就是为什么使用 varchar)

关于php - 如何做php网页和mysql数据库的审计日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587401/

相关文章:

mysql - Delphi +Firedac 和网络连接错误

mysql - 用于用户私有(private)消息传递的基本数据库结构是什么样的?

php - 如何使用 CodeIgniter 滑动上传的图片

php - 如何在if语句中将字体颜色从红色更改为绿色

php - 在 PHP 中匹配模式时将文本拆分为多行

php - 条件运算符未按预期执行

MySQL - 在相关子查询中限制聚合数据时嵌套子查询的替代方法

mysql - 在 Drupal 中,当创建另一种内容类型的节点时,如何以编程方式创建另一种内容类型的某些节点?

php - 限制表单提交的数量(考虑多人同时提交)

javascript - 如何使用 PHP JSON API 防止 JavaScript 平台中的 XSS?