6.2 サーバとクライアントの間での情報の不正入手
6.2 サーバとクライアントの間での情報の不正入手
Web API は通常のウェブサイトと同様に HTTP という暗号化の仕様を持たないプロトコルでやり取りを行う。そのためクライアントとサーバ間の通信経路における情報の不正入手を防ぐ方法が重要。
6.2.1 HTTPS による HTTP 通信の暗号化
最も簡単でなおかつ効果のある方法は HTTP による通信を暗号化すること。
広く利用されているのが HTTPS(HTTP Secure)という TLS による暗号化。
暗号化されるのは以下の情報。
- URI のパス
- クエリ文字列
- ヘッダ
- ボディ(リクエスト・レスポンス両方)
6.2.2 HTTPS を使えば 100% 安全か
ウェブサーバや暗号化機能を提供するライブラリにバグがある可能性があるため、100% 安全であるとは言えない。またクライアント側での処理に問題ある場合も安全性を担保できない。
サーバが送ってきた SSL 証明書を検証しない場合、クライアントとサーバの通信経路の間に入り込んで中継を行い、情報を盗みだすことができてしまう。
サーバ側で対策していてもクライアント側の問題でセッションハイジャックや盗聴が発生する可能性がある。