Facebook Apptoken OAuth2クライアント資格情報コードを使用します。しかし client_id
およびclient_secret
は、HTTP GETメソッドを介してサーバーに送信されます。これは安全ではありませんか?
たとえば、クライアントとFacebookサーバーの間でログが有効になっているノードは、GET URLをログに記録します。したがって、ログイン資格情報をログにクリアテキストで公開します。
安全ではないと思います。それとも何か不足していますか?あなたが知っているクライアントの資格情報を実装する他のより安全な方法はありますか?
正解です。GETパラメータとして資格情報を送信することはベストプラクティスではありません。 OWASP ASVS (現在のバージョン4.0.1)は、これを要件3.1.1で明示的に述べています。
Verify the application never reveals session tokens in URL parameters or error messages.
さらに、 RFC6749 は、トークンがPOST Authorizationヘッダー付きのリクエストとして送信されるクライアント資格情報付与の実際の例を示しています。
トークンにGETパラメーターを使用することはいくつかの理由でベストプラクティスではありませんが、TLSを使用し、クライアントとサーバー間で通信(URLパラメーターを含む)が暗号化されるため、リスクはそれほど深刻ではありません。さらに、サーバー通信へのバックエンドについても言及しています。URLはクライアントで公開されることもないため、ブラウザーの履歴に保存されず、URLが無責任なユーザーに直接公開されることもありません。
それでも、オプションがある場合は、トークンをPOSTパラメータまたはHEADER値として使用する必要があります。