Hangfire Server 是不是可以访问应用程序中的敏感数据?

Posted

技术标签:

【中文标题】Hangfire Server 是不是可以访问应用程序中的敏感数据?【英文标题】:Does Hangfire Server have access to sensitive data within application?Hangfire Server 是否可以访问应用程序中的敏感数据? 【发布时间】:2022-01-17 05:42:12 【问题描述】:

为了使用 ASP.NET core MVC 构建后台作业,我遇到了 Hangfire,我已将这个想法介绍给我的经理,他担心的是安全性,其中一些问题如下。

Hangfire Server 是否有权访问将在应用程序中实现的敏感数据? Hangfire Server 如何触发代码中实现的作业? Hangfire 服务器中是否保存了任何敏感数据?

如果有任何关于 Hangfire 安全性的建议或信息,我将不胜感激。

【问题讨论】:

【参考方案1】:

Hangfire 服务器是否可以访问敏感数据? 在应用程序中实现?

它不会比您的应用程序中加载的任何其他 nuget 包拥有更多的访问权限。

Hangfire Server 如何触发代码中实现的作业?

一项作业在后台运行,并定期轮询 Hangfire 数据库以执行新作业。如果找到一个新作业,则将其存储在数据库中的调用数据反序列化,并通过反序列化参数通过反射调用生成的方法。

Hangfire 服务器中是否保存了任何敏感数据?

这取决于你。每个作业参数都在 Hangfire 数据库中序列化。如果这是一个问题(您不控制或共享 hangfire 数据库),您可以只传递标识符,并在处理作业期间在您自己的数据库中检索相应的值。

例如,如果你打电话

BackgroundJob.Enqueue(() => HandleSensitiveData(new SensitiveDataId="123", Value="VerySensitiveData"));

VerySensitiveData 将存储在hangfire 数据库中,带有整个序列化的SensitiveData 对象

但是如果 SensitiveDataId 123 在您的数据库中,并且您调用

BackgroundJob.Enqueue(() => HandleSensitiveDataFromId("123"));

Hangfire DB 中只保存了 123,您只需在执行 HandleSensitiveDataFromId 时检索 ID 为 123 的对象。 VerySensitiveData 永远不会存储在 Hangfire 数据库中

【讨论】:

感谢您的回复 jbl,我最担心的是 HangFire Server 是否将敏感数据保存在服务器中,因为我们可能会在应用程序中实施危及安全的机密数据。如果您能详细说明最后一个问题,我将不胜感激。再次感谢。 @aldo23 添加了一些示例

以上是关于Hangfire Server 是不是可以访问应用程序中的敏感数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问失败的Hangfire作业

Hangfire.io仪表板映射到IIS虚拟目录

Hangfire实战--添加DashBoard登录权限

ABP模块zero+AdminLTE+Bootstrap Table+jQuery+Redis+sql server+quartz+hangfire权限管理系统

我如何配置一个用户具有只读访问权限,而另一用户具有对Hangfire仪表板的完全访问权限?

是什么原因导致天蓝色托管的hangfire作业具有这种行为?