1

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

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

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

4

1 回答 1

1

Hangfire Server 是否有权访问将在应用程序中实现的敏感数据?

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

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

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

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

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

例如,如果你打电话

BackgroundJob.Enqueue(() => HandleSensitiveData(new SensitiveData{Id="123", Value="VerySensitiveData"}));

VerySensitiveData将与整个序列化SensitiveData对象一起存储在 hangfire 数据库中

但是如果123 在你的数据库中,你SensitiveData打电话Id

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

Hangfire DB 中只保存了 123,您只需在执行时检索 ID 为 123 的对象HandleSensitiveDataFromIdVerySensitiveData永远不会存储在 Hangfire DB 中

于 2021-12-14T07:46:37.540 回答