【问题标题】: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 安全性的建议或信息,我将不胜感激。

【问题讨论】:

    标签: sql-server database hangfire hangfire-sql


    【解决方案1】:

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

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

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

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

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

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

    例如,如果你打电话

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

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

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

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

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

    【讨论】:

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