我遇到Hangfire是为了使用ASP.NET核心MVC构建后台作业,我已经向我的经理提出了这个想法,他关心的是安全性,其中一些问题如下。
- Hangfire Server是否可以访问将在应用程序中实现的敏感数据
- Hangfire Server是如何触发代码中实现的作业的
- Hangfire服务器中是否保存了任何敏感数据
如有任何关于Hangfire安全的建议或信息,我将不胜感激。
Hangfire Server是否可以访问敏感数据在应用程序中实现?
它不会比应用程序中加载的任何其他nuget包拥有更多的访问权限。
Hangfire服务器如何触发代码中实现的作业?
一个作业正在后台运行,并定期轮询Hangfire数据库以查找要执行的新作业。如果找到了新作业,则会对存储在数据库中的调用数据进行反序列化,并使用反序列化的参数通过反射来调用生成的方法。
Hangfire服务器中是否保存了任何敏感数据?
这取决于您。每个作业参数都在Hangfire数据库中序列化。如果这是一个问题(您不控制或共享hangfire数据库(,您可以只传递标识符,并在处理作业期间在自己的数据库中检索相应的值。
例如,如果您调用
BackgroundJob.Enqueue(() => HandleSensitiveData(new SensitiveData{Id="123", Value="VerySensitiveData"}));
VerySensitiveData
将存储在hangfire数据库中,整个序列化的SensitiveData
对象
但是,如果SensitiveData
和Id
123在您的DB中,并且您调用
BackgroundJob.Enqueue(() => HandleSensitiveDataFromId("123"));
Hangfire DB中只保存了123,执行HandleSensitiveDataFromId
时只需检索Id为123的对象即可。VerySensitiveData
从未存储在Hangfire DB 中