为了使用 ASP.NET 核心 MVC 构建后台作业,我遇到了 Hangfire,我将这个想法介绍给了我的经理,他关心的是安全性,其中一些问题如下。
- Hangfire Server 是否有权访问将在应用程序中实现的敏感数据?
- Hangfire Server 如何触发代码中实现的作业?
- Hangfire 服务器中是否保存了任何敏感数据?
我将不胜感激有关 Hangfire 安全性的任何建议或信息。
为了使用 ASP.NET 核心 MVC 构建后台作业,我遇到了 Hangfire,我将这个想法介绍给了我的经理,他关心的是安全性,其中一些问题如下。
我将不胜感激有关 Hangfire 安全性的任何建议或信息。
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 的对象HandleSensitiveDataFromId
。
VerySensitiveData
永远不会存储在 Hangfire DB 中