発端
[連絡] Termtter の OAuth 機能は廃止の予定 - セキュリティ的な理由から #termtter
@jugyo OAuthあまり良くわかっていないですがどういったことが問題になるのでしょうか? ><
@sugyan Termtter のようなアプリの場合、ユーザーのPCに consumer key 等を置かざるを得なくて、それを使えば誰でも Termtter に成り済ませるんですよね #termtter
@sugyan consumer key と consumer key secret を安全に保持する方法が思いつかなかったので OAuth はあきらめることにしました #termtter
これ、どんな問題があるかなぁ RT @jugyo: @sugyan Termtter のようなアプリの場合、ユーザーのPCに consumer key 等を置かざるを得なくて、それを使えば誰でも Termtter に成り済ませるんですよね #termtter
via以下については現時点で簡単に偽装可能。consumer keyをつかってtwitterに攻撃して、consumer key を block される、というあたり?
consumer key をハードコードしてると再発行が面倒か。他にどんな問題があるだろう > consumer keyの流用
現時点での自分の理解
というのがOAuthの仕組みかと。
Twitterの場合
ということになる。
で、
ここで使うconsumer_key、consumer_secretは、Webアプリならサーバ内で保持して漏れないようにしておくことができるのだろうけど、デスクトップアプリの場合、そういうことができない。
スクリプト言語で書かれたものの場合、どうしてもソース内か設定ファイル内に記述することになり、使用者は簡単にそれを知ることができてしまう。バイナリのみの提供で隠蔽していたとしても、おそらくHTTPリクエストを監視してしまえば覗くことができる、はず。
なので、デスクトップアプリでTwitterクライアントがOAuthを使おうとする場合、consumer_keyを隠蔽することができないという問題があるようだ。
consumer_keyが漏れることの問題点
って、なんだろう…
冒頭で挙げられている通り、
- 他のアプリでそのconsumer_keyを使うことができてしまう
- とは言えTwitterアカウント持っていれば誰でもoauth_clients作成できるのでそんなことをするメリットは誰にもないとは思うのだけど
- でもそれが悪用されたりしてそのclientsがblockされてしまうと、他のユーザーが使えなくなる、という危険性がある
というところなのかな。
つまり疑問は
- consumer_keyをユーザーに知られないようにデスクトップTwitterクライアントを作ることはできないのか?
- やっぱりconsumer_keyはユーザーには知られないようにすべきなのだろうか?
- consumer_keyが漏れることの危険性は他に何があるだろうか?
ということ。
誰か詳しい方、教えて下さい ><