0

パブリックAPIを利用するアプリケーションを構築しています。APIを使用すると、権限を使用して、別のアプリのユーザーに代わってアクションを実行できます。ユーザーから権限をatokenおよびaの形式で収集し、ユーザーにsecret代わって認証およびアクションを実行するために使用します。

tokenおよびをデータベースに保存し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 に答える