26486
Google APIを使ってツールを作成しました。Webアプリのようなものではなく、ローカルで動くPythonスクリプトで、REST
APIにアクセスしています。  
これの公開を考えていますが、現状、client_id, client_secretが丸見えです。

そこで、質問です。  
1\. OAuth2のclient_secretが漏れると、誰(例:API公開者であるGoogle, APIを使ったアプリの開発者である私,
アプリの利用者, それ以外の第三者)にとって、どのようなリスクがありますか？  
2\. もしclient_secretを漏らすべきでないとすれば、どのようにして隠すのがセオリーでしょう？
CC BY-SA 3.0
2016-06-05T09:01:31.623
26469
2016-06-06T01:22:38.730
12269
question
security oauth rest google-api
OAuth2のclient_secretは、漏れると何がマズいか？　また、どうやって隠すか？
>   1. OAuth2のclient_secretが漏れると、誰(例:API公開者であるGoogle, APIを使ったアプリの開発者である私,
> アプリの利用者, それ以外の第三者)にとって、どのようなリスクがありますか？
>

OAuth2は「認可」のための仕様です。「あなた（ユーザ）に代わって、○○さん（が作ったプログラム）があなたの情報を扱うことになるが良いか？」という許可をユーザから得ることになります。つまり、そのユーザに対して、プログラムの作者を信用してもらうことが必要になってきます。

client_secretが漏れること、それはすなわち、別の誰かが「あなたの名前を語って」ユーザの情報を扱うことができるようになってしまう、ということを意味しています。ほとんどの場合、ユーザの情報は個人情報などを含む非常に大事な情報になりますので、client_secretの保護を怠った開発者は自分の名前を誰かに語られて不正にユーザ情報を収集され、ユーザ情報が悪用された結果、その責任が「client_secretの保護を怠った開発者」に降りかかってくる可能性が非常に高まると言うことができるかと思います。

>   2. もしclient_secretを漏らすべきでないとすれば、どのようにして隠すのがセオリーでしょう？
>

「ローカルで動くPythonスクリプト」を公開するのであれば、そのスクリプトにあなたが取得したclient_id及びclient_secretを書かない状態で公開するのが良いかと思います。そのスクリプトを使いたければ、自分でclient_idやclient_secretを取得して自己責任で使ってください、とすれば良いかと思います。
CC BY-SA 3.0
2016-06-06T01:22:38.730
26486
2016-06-06T01:22:38.730
531
26469
answer