弊社のサービスはWEBサイトでもアプリ上でも使われておりますが、大半はWEBサイト上で使われています。
基本的に情報のやり取りは WebAPI で行いますが、IDの書き換えによる"なりすまし"のログインや、IDの特定、トークンの入手ができないよう対策しています。細かく挙げればキリがないのですが、大まかにわかりやすいソーシャルPLUS側でのセキュリティ対策をまとめました。
- WebAPI を呼び出すためには API Key が必要
- API Key はお客様サイトごとに事前に発行するシークレットキー
- API Key には十分な長さのランダムな文字列を利用
- ネイティブアプリ実装時は API Key の代わりに公開鍵暗号方式による署名検証を用いてセキュリティを担保している
- トークンは「一度きり有効」かつ「有効期限が短い」ワンタイムトークン
- WebAPI の呼び出し元 IP アドレスも予め指定出来る
- 年に1回、外部の脆弱性検査も受けている
WebAPI を呼び出すためには特定困難な文字列の API Key が必須で、利用するトークンは一度きり有効なワンタイムトークンです。加えて WebAPI の呼び出し元 IP アドレスも予め指定出来るので、外部からアクセスすることは出来ません。さらに年に1回、外部の脆弱性検査も受けて自分達で気付けていないセキュリティホールがないかも確認しています。
間接的ではありますが、導入事例に大手企業が並んでいることから、企業側の厳しいセキュリティチェックを通過した上でサービス導入に至っている点も考慮していただけると幸いです。
ただし、ソーシャルPLUSとしてセキュアな環境を用意しても、ソーシャルPLUSの WebAPI で取得した情報をWEBサイトがフロント側で引き渡しをするような実装をされてしまうと、フロント側で情報を引き渡しているタイミングにIDの書き換えが出来てしまいます。
とにかくサイト改修を最小限に抑えたいという思いで、工数やコストを最優先のプライオリティにしてしまうことは非常に危険です。今回の事件を機に、ソーシャルログインに限らず各企業がサイト改修の際にセキュリティ面をより一層配慮していただけるようになることを願います。