aruto's diary

Since 2003

「OAuth認証が通ると、アプリ作者からはDMも何もかも見放題」という書き方は誤解を招く

”なる4”の騒ぎの件で、「OAuthの危険性がわかっているのか?twitter関連アプリの作者は何でもできるんだぞ。たとえば、DMは見放題送り放題だ」という意見を良く見かけるのですが、誤解を招く表現なので、twitterクライアント作者の立場から捕捉しておきます。
TwitterにおけるOAuth認証についての話です。本文の記述から判別できるとは思いますが、念のため。他サービスの場合、事情が異なってくる場合があります)

  • 少なくともデスクトップで動作するアプリは、これらのリスクは(比較的)低い

もちろんスパイウェア等は、この限りではありません。
OAuth認証の流れを図にしてみました(あくまで「おおまかな」図です。色々と、端折っています)。

うだうだと書かれていますが、大事なのは「アクセストークン」です。これさえ覚えてもらえれば、他は全て忘れてしまってかまいません。
twitter関連アプリケーションは、(OAuth対応のものは)すべて、アクセストークンを使ってサーバにアクセスします。逆にいえば、これが無い場合、認証済みアプリの作者とはいえ、何もできません。

  • なぜ「デスクトップ型アプリは安全で、サーバ型アプリはそうでない」のか

デスクトップ型アプリは、このアクセストークンが、あなたのコンピュータに保存されます。
サーバ型アプリは、このアクセストークンが、見知らぬ誰かのコンピュータに保存されます。
なので、認証済みアクセストークンは、ほかの用途に流用される可能性もあります。上の図にある「アプリ固有のキー」は、複数のアプリケーションで使い回すこともできるからです。
「別のアプリを作ったとき(や、アプリに手を加えたとき)は、キーを変えなければならない」決まりはないのです。なので、同じアクセストークンを、他のアプリケーションに流用されてしまう可能性もあります。
(「なる4時」の作者が、いたずらで自身の発言をFav登録させたのも、この仕様を利用したものです)
しかし、デスクトップ型アプリケーションでは、アクセストークンを管理するのはあなたです。あなたが悪意あるアプリケーションを起動しない限り、見知らぬアプリケーションにアクセストークンを流用される恐れはありません。
もちろんウィルス等に狙われた場合はこの限りではありません。サーバ型アプリケーションより安全なのは確かですが、デスクトップ型のアプリとはいえ、OAuthアクセス認証の許可には(サーバ型と同様に)慎重になりましょう。

  • 油断はしないこと

リクエスト・トークンは、とても大事なものです。これが盗用された場合は、他人にtwitterへのアクセスを許すことになります。パスワードと同じように厳重に扱い、決して、他人に教えてはいけません。
できれば「アプリの設定ファイルを送って」と言われても、従わないほうが賢明です。

  • それでも、パスワード認証型よりは、はるかに安全

「OAuthだからと安心できない」という内容でしたが、それでも、従来のパスワードを入力して認証を行うアプリケーションよりは、はるかに安全です。
たとえばOAuthでは、以下のようなことはできません。

    • パスワードを変更する
    • IDを変更する(nameは変更できる)
    • アカウントを無効化(deactivate)する

ですが、パスワード認証型のアプリケーションでは、これら全てが可能です。
業務で利用するアカウント等では、このようなアプリケーションを利用しないほうが賢明でしょう。

  • もっと詳しく知りたい方

ここを見れば全て分かります。ネットに氾濫している知ったかぶりなブログ記事を見るよりは、ずっとわかりやすいでしょう(英文です)。
http://apiwiki.twitter.com/Twitter-API-Documentation