【问题标题】:Keeping a log of user changes in web application在 Web 应用程序中记录用户更改
【发布时间】:2013-08-22 05:00:32
【问题描述】:

在我的 Web 应用程序 (java/tomcat/struts/mysql) 中记录用户更改的最佳方式是什么?我提供帐户,每个帐户都有多个用户。我希望帐户管理员能够在任何给定时间查看谁做了什么。我希望能够访问所有这些。首先,我需要一种方法来了解哪些字段已更改,然后我需要将每个帐户的更改记录在他们可以看到的地方。显然,我不想减慢应用程序的速度。我在此站点上阅读了一个答案,建议保留数据库日志-在发送每个查询后查询数据库以进行更改。不知道该怎么做。

【问题讨论】:

    标签: java mysql tomcat struts-1


    【解决方案1】:

    这取决于您的网络应用程序的性质。假设您的 Web 应用程序是一个电子商务系统,它允许用户添加新产品或更新现有产品。当用户执行特定操作(例如添加新产品)时,基本目标是捕获他的用户名、操作和时间戳。更新产品也是如此,您可能希望跟踪他更新了哪些值、旧值是什么以及他何时更改。

    要做到这一点,首先你需要

    1. 创建审核表

      • 显然您想要跟踪上次修改的人、时间戳、创建者等。
    2. 每当执行一些更改/操作时,创建一个日志记录机制。

      • 执行此操作的方法很少,您可以通过应用程序执行此操作,也可以将所有内容留给数据库触发器。我建议使用触发器来检测数据库中的任何创建/更新/删除事件,并要求触发器捕获详细信息并写入审计表。我认为这是最干净且维护更少的方式。但是,如果您想使用应用程序进行日志记录,则必须更改代码,创建新方法以将详细信息捕获到您的操作类中的审核表中。

    更多关于 MYSQL 触发器的信息here

    【讨论】:

      【解决方案2】:

      我正在寻找一种类似的“方法”来记录我的网络应用程序中的交易和其他内容。就在浏览谷歌时,我发现了这个链接: https://www.owasp.org/index.php/Logging_Cheat_Sheet 讲述两种可能的日志记录方式:在数据库或文件系统上的某些日志文件...

      使用文件系统时,最好使用单独的 分区比操作系统,其他应用程序使用的分区 文件和用户生成的内容对于基于文件的日志,应用严格 关于哪些用户可以访问目录的权限,以及 目录中文件的权限 在 Web 应用程序中, 日志不应暴露在 Web 可访问的位置,如果这样做了 所以,应该限制访问并使用纯文本配置 MIME 类型(不是 HTML) 使用数据库时,最好 使用仅用于写入日志的单独数据库帐户 数据,它具有非常严格的数据库、表、函数和 命令权限 使用标准格式而不是安全协议 记录并将事件数据或日志文件发送到其他系统,例如常见的 日志文件系统 (CLFS)、基于 syslog 的通用事件格式 (CEF)、 未来可能会出现共同事件表达(CEE);标准格式 促进与集中式日志记录服务的集成

      他们很好地解释了我们可以记录的可能方式,应该记录什么,也应该避免什么。

      希望对你有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-01
        • 2016-09-05
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 2011-09-29
        相关资源
        最近更新 更多