django - 在 django 中使用任务队列而不泄漏 kwargs
问题描述
我想使用 django 创建一个网页,该网页在请求时会显示一个表单,要求输入各种用户输入,包括用户密码。提交后,应该启动一个并发任务,它将用户输入作为参数并进行各种计算。
注意
该任务必须同时启动,因为计算可能需要一段时间,我想立即通知用户他的任务已被接受 - 我想让他在另一个视图中了解他的任务的最新信息。
明文用户密码是任务参数的一部分。必须如此,因为计算涉及依赖密码的加密操作。
现在我将使用 celery 和 django_celery_results 作为该目标的结果后端(并且已经开始使用它),当我注意到:哇... django_celery_results 将明文密码作为任务 kwargs 的一部分存储在数据库中。这不酷。在阅读celery security documentation之后,纯文本密码的整个 RabbitMQ 消息传递对我来说似乎有点不安全。谁知道 celery 在哪个日志中写入密码。
总结一下:celery 和其他任务队列似乎并非旨在将敏感信息作为参数处理。我真的只需要启动一个简单的并发任务,更新其状态并将其结果存储在数据库中。我想纯粹留在 python3 和 django 中。有什么建议吗?
编辑:
- 我不想为此使用javascript。我想使用服务器端表单验证并在那里启动异步任务。
- 对用户密码应用归约函数、散列函数或任何其他转换并不能解决问题。无论我为我的任务队列提供什么,都需要足以执行加密/解密操作,因此非常明智。
- 我寻找一个解决方案,其中明文密码只存储在内存中
解决方案
推荐阅读
- key - Chocolatey 安装期间的产品密钥
- azure - Azure Powershell - 应用程序网关配置
- javascript - 将列表中的每个项目远程显示到实验室中每台计算机的显示器上
- javascript - 如何为带参数的事件处理程序做 ES 6 箭头?
- angular - 为什么以角度 2 从 Observable 中打印未定义的数据
- javascript - Zip 下载没有发生
- rxjs - RxJS groupBy 到多维数组
- html - ng-2 图表:无法让条形图轴从 0 开始
- python-sphinx - Sphinx:如何包含位于模块内但在类和方法之外的文档字符串/注释
- c++ - 为什么在使用 O_DIRECT 写入文件时从文件中读取数据时数据损坏