Django,全局变量和令牌



我正在使用django开发一个网站。在服务器端,我需要传输一些必须在第二台服务器(在另一台机器上)处理的数据。然后,我需要一种方法来检索处理后的数据。我认为最简单的方法是将 POST 请求发送回 Django 服务器,然后在专用于该作业的视图上处理该请求。

但我想为此过程添加一些最低安全性:当我将数据传输到另一台机器时,我想将随机生成的令牌加入其中。当我取回处理后的数据时,我希望也取回相同的令牌,否则请求将被忽略。

我的问题是:如何将生成的令牌存储在 Django 服务器上?

    我可以使用全局变量,
  • 但我的印象是在网上到处浏览,出于安全原因,不应该使用全局变量(并不是我真的明白为什么)。
  • 我可以将令牌存储在磁盘/数据库中,但这似乎是对性能的不合理浪费(即使在实践中它可能不会有太大变化)。

有没有第三种解决方案,或者使用Django做这样的事情的规范方法?

您可以将令牌存储在 django 缓存中,在大多数情况下,从数据库或磁盘存储会更快。

另一种方法是使用 redis。

您还可以计算您的代币:

  1. 在两个服务器的设置中保存一些随机令牌
  2. 根据舍入到 10 秒的当前时间戳计算令牌,例如使用:

    token = hashlib.sha1(secret_token)token.update(str(rounded_timestamp))token = token.hexdigest()

  3. 如果 POST 请求时在远程服务器上生成的令牌
  4. 与本地服务器上生成的令牌匹配,则在获得响应时,请求有效并且可以处理。

简单明显的解决方案是将令牌存储在数据库中。其他可能的解决方案是 Redis 或类似的东西。最后,你可以看看像芹菜这样的分布式异步任务队列......

相关内容

  • 没有找到相关文章

最新更新