0

我正在构建一个使用公共 api 的应用程序。该 api 允许我们使用权限代表不同应用程序的用户执行操作;token我们以 a和 a的形式从用户那里收集权限secret,我们用来代表他们进行身份验证和执行操作。

我们将tokenand存储secret在我们的数据库中。它们是专门为我们的 api 应用程序生成的,所以每当我们需要使用 api 为用户执行操作时,我们还需要提供自己的 api 凭据;所以类似于:

from myapp.settings import API_APPID, API_PASS
user.perform_action(api_appid=API_APPID, api_pass=API_PASS, permissions_token=user.permissions_token, permissions_secret=user.permissions_secret)

(实际上,我们使用权限令牌/秘密生成身份验证标头)。

我想知道我们是否应该在我们的数据库中加密权限令牌/秘密?我最初的想法是不,因为没有我们自己的 api 凭据(存储在我们的 settings.py 中),权限令牌和密码是无用的

如果我们要加密令牌,无论如何我们都会将私钥存储在 settings.py 中,这意味着应用程序的安全性将同样取决于我们的设置文件的保密性。

有什么想法吗?是否有充分的理由加密这些令牌,还是我认为它是多余的?

谢谢你的帮助。

4

1 回答 1

0

并不真地。如果有人破坏了您的应用程序服务器,他们将拥有获取令牌所需的密钥,并且无论如何都能够(作为服务器)查询数据库。

如果您不需要单独的 API 密钥,它可以防止简单的 SQL 注入。但是,正如您所说,API 意味着学习令牌的攻击者不会学到任何有用的东西。当然,这是假设令牌不包含诸如用户密码之类的敏感信息。

于 2012-06-01T05:16:22.620 回答