結論
- リクエストヘッダーに書く方が安全。リクエストヘッダーに書くと、https通信において暗号化される。
経緯
- chatworkのapiのページを見ていたら、「・・・APIトークンはURLのクエリーストリングではなく必ず HTTPリクエストヘッダ で送信するようにしてください。」との説明があった。
Chat GPT先生に聞いてみた
- 最近はGoogle先生よりも、Chat GPT先生の方が良い答えを出してくれるので、Chat GPT先生の回答を書いておきます。
Chat GPTへの質問
- クエリパラメータに書くとセキュリティ的に良くないので、リクエストヘッダーに書くべきと言われたが、通信最中に読み取られる危険性は、クエリパラメータに書く場合と、リクエストヘッダーに書く場合でどのようにちがうのか?
Chat GPTからの回答
- アクセストークンをクエリパラメータに含める場合とリクエストヘッダーに含める場合、セキュリティの観点からそれぞれ異なる利点と懸念事項が存在します。以下に、それぞれのアプローチの比較を提供します。
アクセストークンをクエリパラメータに含める場合:
-
利点:
-
簡単にデバッグ可能: ブラウザのアドレスバーなどでトークンを直接表示でき、デバッグが容易です。
-
キャッシュされない: 一般的に、クエリパラメータはブラウザにキャッシュされないため、セキュアな情報を格納するのに適しています。
-
懸念事項:
- URLがログに記録される: アクセストークンがURLに含まれるため、サーバーログやブラウザの履歴などに記録される可能性があり、セキュリティリスクとなります。
リファラ情報: 他のウェブサイトにリンクされた場合、アクセストークンがリファラ情報に含まれる可能性があります。
- URLがログに記録される: アクセストークンがURLに含まれるため、サーバーログやブラウザの履歴などに記録される可能性があり、セキュリティリスクとなります。
アクセストークンをリクエストヘッダーに含める場合:
-
利点:
-
より安全: アクセストークンがリクエストヘッダーに含まれるため、URLやリファラ情報に含まれません。
-
セキュアな通信: HTTPSを使用して通信する場合、リクエストヘッダー内のデータは暗号化され、盗聴者からの保護が得られます。
-
懸念事項:
- ヘッダー内の情報: リクエストヘッダーは通信の一部として送信され、中間者攻撃などのセキュリティリスクに対処する必要があります。
- アクセストークンをリクエストヘッダーに含める方法は、セキュリティの観点から一般的により安全です。HTTPSを使用して通信することで、データが暗号化され、セキュリティが向上します。ただし、セキュリティに対する注意が必要であり、適切なセキュリティ対策を講じることが重要です。また、アクセストークンの管理とリフレッシュも考慮する必要があります。