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
对象
但是如果 SensitiveData
和 Id
123 在您的数据库中,并且您调用
BackgroundJob.Enqueue(() => HandleSensitiveDataFromId("123"));
Hangfire DB 中只保存了 123,您只需在执行 HandleSensitiveDataFromId
时检索 ID 为 123 的对象。
VerySensitiveData
永远不会存储在 Hangfire 数据库中
【讨论】:
感谢您的回复 jbl,我最担心的是 HangFire Server 是否将敏感数据保存在服务器中,因为我们可能会在应用程序中实施危及安全的机密数据。如果您能详细说明最后一个问题,我将不胜感激。再次感谢。 @aldo23 添加了一些示例以上是关于Hangfire Server 是不是可以访问应用程序中的敏感数据?的主要内容,如果未能解决你的问题,请参考以下文章
ABP模块zero+AdminLTE+Bootstrap Table+jQuery+Redis+sql server+quartz+hangfire权限管理系统