短縮URLのリスクと対策

Twitterなどでお馴染みの短縮URLサービス。

http://bit.ly/gROal という形式や http://tinyurl.com/mpheg5 で表示されるあれだ。この2つの例は、このブログのURLなのでさほど長くないが、個別のページへの長いURLやウェブアプリケーションにより生成された長い乱数などが埋め込まれたURLなどの場合には、URLが短縮できると便利だ。

特に、Twitterは140文字という文字数制限がある。貴重な文字数をワケワカメな暗号のようなURLで使ってしまうのは勿体無い。

ということで、Twitterなどでは短縮URL花ざかりなわけだが、どうにも、この短縮URLが気持ち悪い。

リスク

飛んだ先に何があるかわからないため危険だと言うことが言われるが、この危険というのにも種類がある。いわゆるフィッシングサイトやマルウェアが埋め込まれたサイトではないかという心配ならば、多くの場合、ブラウザ*1がそのようなフィッシング/マルウェア対策はしているから、それほど問題ではない。もちろん、ブラウザの対策に時間がかかる可能性はあるので、立ち上がったばかりのフィッシングサイトに誘導された場合は、お手上げではあるが、これはURLが短縮されているからと言って、危険性が大きく増すものではない。また、XSSなどの場合も同じだろう。つまり、多くの場合は、URLが見えていてもそれだけではリスクが分からないものは、短縮されたからと言って、大きくリスクが増大するわけではない。もちろん、フィッシングやマルウェア対策をしていないような古いバージョンのブラウザを使っていたり、ウィルス対策ソフトを入れていないような場合には、ただでさえ高いリスクがさらに増大することにはなる。

Twitter側の対策としては、URL短縮の標準機能として提供しているbit.ly側の対策がまずあげられる。bit.lyのFAQにはセキュリティについて以下のように記述されている。

Bit.ly filters all links through several independent services to check for spam, suspected phishing scams, malware, and other objectionable content. We currently include Google Safe Browsing, SURBL, and SpamCop in our operations.

bit.ly FAQより

Google Safe BrowsingというのはGoogle ChromeFirefoxSafari、さらにはGoogleの検索結果ページにも使用されているマルウェアやフィッシング対策のAPIだ。また、SURBLとはSPAM URL Realtime Black Listの略で、スパムメッセージの中のURLなどをデータベース化したものだ。SpamCopも同じくスパムメッセージのDBだ。

このようなものを標準で取り入れているので、簡単なセキュリティ攻撃からは身を守れるようにはなっていると考えてよいだろう。

Twitterはさらに投稿されるTweetsの中に、悪意のあるサイトへのURLがあった場合には、投稿そのものが出来なくなる機能の提供を開始している。ただ、残念ながら、これは短縮URLへの対応が不完全とレポートされている。

Twitterのフィルタリング機能について、セキュリティ専門家たちは“最初の一歩”と一様に評価しているが、一方で改善が必要との見解も示している。というのも、Twitterでよく使われる短縮URLをブロックできないためだ。

Twitterの「悪質URL」フィルタリング機能は不十分――専門家が指摘 短縮URLには対応できず - ComputerWorld.jp

広義のセキュリティという観点で見た場合、リスクは確実に増大する。

ここで言う広義のセキュリティとは、いわゆる狭義のセキュリティの考えでは危険なサイトではないが、クリックするユーザーが期待しているのと大きく異なるようなサイトに飛ばされることだ。たとえば、就業中にTwitterのTL上で短縮URLをクリックしたらアダルトサイトに飛ばされて同僚の前で赤っ恥とか、勝手にAmazonのアフィリエイトリンクをクリックさせられたことになっていたとかだ。アダルトサイトがURLを見ただけでわかるかどうかは、その人の日々のネット生活がどのようなものかに依存するのでなんとも言えないが、多くの場合はURLから想像できるもののはずだ。もちろん、リダイレクトにリダイレクトを重ねたような手の込んだ者の場合にはお手上げだが、これは短縮URL特有の問題ではない。

いずれの場合にしても、短縮URLは、復元してからアクセスできたほうが良いに決まっている。

対策

Twitter限定で考えた場合、まずbit.lyをどうやって元のURLに復元するかを考えれば良い。ブラウザを使っている場合は、bit.ly提供のFirefox拡張を使う方法とGreasemonekyのようなユーザースクリプトを使う方法がある。

bit.ly提供のFirefox拡張はここからインストール出来る。インストールすると、マウスホバーによりプレビュー画面が表示され、bit.lyで短縮されたURLの詳細がわかる。次のような感じだ。

bitly_preview_extension

更新: bit.ly拡張を入れると、すべてのSSLで証明書の確認が適切に行えない模様です。コメント欄でtss_ontapさんが教えてくださいました。bit.lyプレビューFirefox拡張がSSL通信を阻害?でそのことを追記しました。

また、ユーザースクリプトは何種類かあるが、Google ChromeFirefoxの両方で動作確認が出来たTwitter decode Tinyurlを使っている。おそらくほかにある類似のスクリプトでも問題ないだろう。ちなみに、Google Chromeでユーザースクリプトを使う方法はGoogle Chrome 2.0 で使える(自作の) User Scripts - 0xFFを参照して欲しい。これを導入すると次のようにTwitterの画面が変わる。

bitly_userscript

最後に、Twitterクライアントを使っている場合だが、私の使っているTweetDeckは標準で短縮URLプレビュー機能が提供されている。次のように設定画面で、"Show preview information for short URLs"にチェックを入れるだけで設定は完了だ。

tweetdeck_bitly_setting

設定後、bit.lyのリンクをクリックすると、次のようにプレビューが表示される。プレビュー画面の中では、Short Title、Short URL、Long URL、Info Link、Metricsなどが見れる。ここでShort URLかLong URLをクリックすると、目的のURLに飛んでいく。

tweetdeck_bitly_preview

このInfo Linkというのは、Firefox拡張では、"More information"の名前でリンクが用意されていたものだが、これをクリックすると、この短縮URLに対するbit.ly上で詳細情報が見れる。TwitterFriendFeedでどのくらいこの短縮URLが利用されたかなども分かり、なかなか便利だ。

bitly_moreinfo

参照:

補足

TinyURLの場合には、Preview a TinyURLというTinyURL標準ページで常にURLをプレビューするような設定にすることが出来る。これはブラウザにクッキーを設定し、それでプレビューを表示させるようにするものだ。ただ、そのプレビュー画面は極めてシンプル。単に飛び先の復元したURLが見えるだけ。

TinyURL_Preview

あと、bit.lyでも普段自分が使っていないPCなどで復元された元のURLを知りたいときには、URLの最後に"+"をつけると良い。たとえば、このブログへの短縮URLが http://bit.ly/gROal なのだが、この場合は、http://bit.ly/gROal+ とすれば、bit.ly上で詳細情報ページを見ることが出来る。http://bit.ly/info/gROal としても同じ。

今回はbit.lyを中心にした短縮URLについて書いてみたが、ほかにも以下のように秀逸なまとめをされている方もいらっしゃった。これらを参考にされると良いだろう。

*1:それに加えて、ウィルス対策ソフトにもそのような機能が組み込まれている場合も多い