问题标签 [auditing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在业务层实现审计
我正在尝试为用户可以登录、更改密码和电子邮件等的系统实施基本审计。
我要审计的函数都在业务层中,我想创建一个审计对象来存储调用函数的日期时间,包括结果。
我最近参加了一个会议,其中一个会议是关于精心设计的 Web 应用程序,我正在尝试实施一些想法。基本上我使用 Enum 来返回函数的结果并使用 switch 语句来更新该层中的 UI。这些功能使用提前返回,不会留下任何时间来创建、设置和保存审计。
我的问题是其他人在审计业务功能时会采取什么方法,如果你有像我这样的功能,你会采取什么方法(如果你说放弃它,我会听但我会脾气暴躁)。
代码看起来有点像这样:
我可以扩展 if 语句以在每个语句中创建一个新的审计,但随后函数开始变得混乱。我可以在 switch 语句的 UI 层中进行审计,但这似乎是错误的。
将所有内容都放在 try catch 中并使用 finally 创建 Audit 对象并将其信息设置在其中从而解决提前返回问题真的很糟糕吗?我的印象是 finally 是用于清理而不是审计。
我的名字是大卫,我只是想成为一个更好的代码。谢谢。
oracle - 如何实现基于上下文的数据库审计?
我有一个当前的数据库驱动应用程序,它有几种访问数据的方法。
- Web应用程序
- 直接 SQL 访问用户(我正在尝试删除这些)
- 客户端服务器应用程序
- 批量输入和输出
我需要实施基于上下文的审计,因为当前的数据审计不足以追溯识别导致数据更改的过程。
我目前正在考虑将数据模型隐藏在 XAPI(事务性 API)后面,并且数据模型上的每个操作都必须提供某种形式来识别相关操作或数据更改的原因,这些操作将与审计数据本身一起存储。
谁能给我一个更好的方法来实现基于上下文的审计,这将涵盖对数据库的所有访问?或者甚至指出我目前的方法中遗漏的任何明显缺陷?
提前致谢。
java - 如何审核用户提供的类文件以将包、类和方法列入黑名单
我正在开发一个托管用户定义的存储过程的应用程序,这些存储过程作为 Java 类文件提供。程序需要是确定性的,我想将各种包和方法列入黑名单,这些包和方法是非确定性的来源。我查看了 java.lang.Class 和 javax.tools.* 中可用的内容。
看起来我可以使用 java.lang.Class 审核成员、方法参数和返回类型。但是,要审核方法内容,我似乎必须分析原始类文件。
我还需要审核静态初始化块和成员变量初始化等极端情况。在某些情况下,例如 java.util.Date,默认构造函数是不确定的,但其他情况都很好。
是否有一个框架或工具可以使分析类文件的这些方面变得容易?
jpa - 使用 Spring Data JPA 进行审计
我在所有实体对象都需要审计的应用程序中使用 Spring Data JPA。我知道我可以让每个都实现 Auditable 或扩展 AbstractAuditable,但我的问题在于整体审计实现。
Spring Data JPA 参考页面上的示例似乎表明每个实体都需要一个 AuditableAware bean。有没有办法避免这个额外的代码并在一个地方或通过一个配置处理它?
asp.net-mvc - ASP.NET MVC 中的 NInject、nHibernate 和审计
我正在开发一个继承的应用程序,它使用 NInject 和 nHibernate 作为 ASP.NET MVC (C#) 应用程序的一部分。目前,我正在研究修改审计的问题。每个实体都有 ChangedOn/ChangedBy 和 CreatedOn/CreatedBy 字段,它们映射到数据库列。但是,这些要么填写错误的用户名,要么根本没有用户名。我认为这是因为它的配置方式错误,但是我对nHibernate和NInject的了解还不够,无法解决问题,所以希望有人能提供帮助。下面是一些代码片段,希望能在应用程序中提供足够的洞察力。
创建会话工厂和会话:
配置会话工厂:
来自事件监听器的片段:
如您所见,会话工厂位于单例范围内。因此 eventlistener 和 stamper 也在这个范围内被实例化(我认为)。这意味着当用户尚未登录时,压模中的用户名设置为空字符串或“未知”。我试图通过修改 Stamper 来弥补这个问题。它检查用户名是空还是空。如果这是真的,它会尝试找到活动用户,并用该用户的名称填充用户名属性:
但这会导致一个完全不同的用户名,它也登录到应用程序,登录到数据库中。我猜这是因为它解决了错误的活动用户,即最后一个登录的用户,而不是启动交易的用户。
sql - 使用数据库行存储有关行的元数据?
存储有关一行一行的元数据的最佳实践是什么?
以银行间金融转账为例。Transfer
可能看起来像:
但是现在,当然,人们会希望看到元数据:
这些都是明确定义的值,它们都将出现在与转移相关的硬拷贝上。
我们已经对表中的更改进行了审计日志记录,但这不会捕获如下内容:
它将捕获进行更改的人的用户名、全名和机器名;但它无法知道在此人肩上输入其凭据以“授权”接收转移的主管的姓名。
当他们要求跟踪另一条信息时,我感到很恼火,我必须在我的数据表中添加更多元数据列。
这是最佳实践吗?
linux - 如何从 Linux 查询 Windows 注册表项?
我正在开发一个 Linux 审计应用程序,除其他外,它必须从 Windows 机器上检索已安装的软件和许可证。应用程序必须是无代理的。wmi-client 实际上确实实现了我想要的,我尝试查询应用程序,它工作得很好:
现在我的问题是,如何检索某些应用程序的产品密钥?我知道有时它们存储在注册表项中,我可以通过 WMI 查询它们吗?
编辑:刚刚在一个网站上发现:
WQL 查询基于某些提供一组属性的 WMI 类。相反,WMI 注册表操作基于“默认”命名空间中的“StdRegProv”,并且必须调用某些方法才能获得结果。这意味着注册表查询基于 WMI 过滤器是不可能的。
所以看起来 WQL 无法询问注册表项,那我该怎么办?有任何想法吗?
database - 数据库中的审计日志(跟踪)篡改
假设我们有一个应用程序,它有一个数据库——例如 MySQL、SQL Server 或 Oracle。假设我们有多个人,例如数据库管理员和审计管理员,他们对数据库具有管理员访问权限。假设其中一个人修改了记录并更改了审计跟踪(因为他们具有管理员权限,我认为他们可以对数据库做任何事情,但如果我错了,请纠正我)。
有没有其他方法可以检测到这一点?由于更改审计跟踪会掩盖对数据库记录的篡改。
是否有任何数据库供应商对此有解决方案?我想这属于数据库取证下的审计日志篡改检测。
linux - 如何在 Perl 中监控远程 Linux 机器并检索已安装的软件?
我有几个 Perl 脚本允许我通过 WMI 监视远程 Windows 机器。现在我可以检查 CPU 使用情况、内存使用情况、磁盘使用情况和已安装的软件。但是如果我想在远程 Linux 机器上做同样的工作怎么办?当然没有 WMI,所以我想我会使用类似的东西。我读过另一个旧的StackOverflow 问题,Linux 通过/proc和/sys公开信息,但我可以从远程计算机查询它们吗?我怎样才能在 Perl 中做到这一点?有专门的模块吗?
编辑:澄清一下,脚本必须是无代理的。
java - 特定字段的 MySQL/Java 审计
我有几个表可以更新某些字段。
我想保留不同领域变化的历史。 然而,不同的字段有不同的类型,但是我不想在我的“审计”表中创建许多不同的列。
所以我虽然应该使用序列化(我经常在 PHP 中使用它),但我不确定它在 Java/MySQL 中的效率如何(我没有使用任何数据框架等)。如果序列化,那又是什么?XML/JSON?
我想到了两张表:
- AuditEntityProperty(Id (PK)、EntityId (FK)、PropertyName、From、To、DateTime、用户名)
- AuditEntity (EntityId (PK), EntityName)
From/To 是我目前不知道如何解决的问题。 我倾向于 XML 并使用 TEXT 作为两者的数据类型。想法?