2011年5月7日土曜日

TSUTAYA DISCASのログイン画面が非SSLなのが不安なのでGreasemonkeyスクリプト作ってみた

ゴールデンウィークだ。
ゴールデンウィークといったら連休。連休といったら巣ごもり。巣ごもりといったらDVD鑑賞。不健康ですかそうですか。ていうか出だしの一言、終盤のこの時期に言う台詞じゃないだろうが、俺。

DVD鑑賞といったらレンタル。レンタルといったらTSUTAYA。そしてそのネットレンタルサービスであるTSUTAYA DISCAS。近くに店舗がない、あっても作品数が少ない、素早く作品探したい。店往復の時間が勿体ない、引きこもりだetcetc…といった方々にとって非常にありがたいネットレンタルサービスの一つであるTSUTAYA DISCAS。長らく松本人志(と他数名)の作品以外にはあまり手を出す気になれないという感覚の持ち主である僕は、DISCASはおろか普通に店舗を利用する事も殆どなく、昨年の退職で時間ができたの機に利用し始めたばかりのペーペーです。

そんなTSUTAYA DISCAS、使い始めてすぐにサイトリニューアルが行われた(昨年10月くらいだっけか)のですが、リニューアル後のログイン画面が何とびっくり非SSL。要は暗号化されていない。画面上部(下部にもある)の「ログイン」リンクから遷移し、ページのアドレスを確認してみてください。
以下、Chromeでアクセスした画面。


Chromeの場合、非SSLページのパスワード欄はご覧の通り赤色になるみたい(危険を促している?)なので、非常に分かり易いです。またアドレスが「www」で始まっている事からも非SSLであることは明らかですね(アドレスが「http://」で始まる場合、Chromeはそこ省略される)。

何てことだ。Macにも普通にウイルス対策ソフト導入したりVista以降のWindowsに搭載されているUACに嫌悪感無いという、サイバーテロビビリな僕にとって、これは生きた心地がしない。今までパスワード平文(未暗号化の状態)で送信されていたのか!?

で、調べてみたのですが、大丈夫だったみたいです。ページが非SSLでも、情報の送信先アドレスがSSLページであれば、ちゃんと暗号化されるらしい。情報元は以下。
ログイン画面のページソースを表示して、ログインフォームのaction属性見てみたら、「https://~」となってました。「送信先がSSLであれば暗号化される」ってのは知らんかった。へーそうなんだ。でも、本当に大丈夫なのか?上記ページにはさらに以下の情報が。

SSLの最初の暗号キーの交換の部分のパケットをさぐられると暗号を解除できてしまうので、一度httpsセッションに入ってからデータを送付した方がより安全なんですよね・・・。

暗号化というのは、要は元のデータをある手順で加工するということ(簡単な例だと「○番目と□番目の文字入れ替える」とか)。『暗号キー』とは要するにこの手順のようなもの。データが暗号化されて訳分からん状態になっていたところで、手順が分かれば逆算できてしまいます。ってことで、ログインページが非SSLというのはやっぱり危険。
※この辺、私の理解が間違っていたらご指摘ください。

さて、どうすればいいのだろうか。運営サイドに連絡するのはもちろんとして、利用者側で対応できることは何か無いのか?ありました。
ログインページのアドレスの「http://」を「https://」に変える。これだけです(※1)。以下、Chromeでやってみた画面。

パスワード欄は赤くならず、アドレスも「https://」から始まっていますね。これで前述の『暗号キーの交換の部分のパケット』自体が暗号化されるので安心(僕の理解、あってます?)。

で、ここからが本題。手入力面倒なので、自動遷移するグリモンスクリプト作ってみた

ま、「http://~」のログイン画面にきたら「https://~」のページにジャンプするだけの、1行で済むスクリプトですが。グリモンのスクリプト自作するの初めてだったので、備忘も兼ねて手順をご紹介します。
ちなみに手順はFirefox用。ここまでChromeでの画面キャプチャ載せてきてアレですが、Chromeの場合も手順は殆ど変わらんでしょう。
1.Greasemonkeyのインストール
まずはこれやんないと話にならないよね。
2.ユーザースクリプト新規作成
インストール済んだら、Firefoxのどこかに猿のボタンが出現する筈です。
『▼』クリックして『新規ユーザースクリプト』を選択。『実行するページ』欄に、問題となっているログインページのURLを入力、それ以外はお好みの値を入力してください。ただ『名前空間』にはなるべく「ユニーク(一意)になりそうな値」を入力するように(この辺の解説は割愛させて!)。


『説明』欄とかに全角文字入力していたら、多分エラーダイアログが表示されると思いますが、続行してください。スクリプトファイルがエディタで表示され、先程のダイアログで全角文字を入力していた場合、一部が文字化けしていると思います。気になるなら化けた部分を入力し直して、ファイルを文字コード『UTF-8(BOM無し)』で保存しなおしてください。
3.コーディング
以下の文章をファイル末尾に追記。
alert("SSLログインページへリダイレクトします!");
location.replace("https://www.discas.net/netdvd/smtN.do");
処理の肝は2行目です。
1行目は情報ダイアログ表示する命令なので、別に無くても構いません。鬱陶しかったら消してください。ちなみに全角文字を使用する場合は、ファイルの文字コードは前述した『UTF-8(BOM無し)』にしてね。

なお、ログインページのアドレスが変わった場合は、それに合わせてアドレス変える必要があります(「@include」の右のアドレス(実行するページ)もお忘れなく)。

有名サービスだから、結構指摘されているのかと思いきや…

全然見当たらないですね。僕の杞憂なのか、それとも僕は何か間違えまくっているのか?「ツタヤディスカス 非SSL」で検索して「いきなり見つけた!」と思ったら、自分のつぶやきだった…。

運営サイドの対応としては、「ログイン」リンクのリンク先を「https://~」に変更するだけで済むような気がするのだが…システム開発を外注してたりして、結構面倒なんですかね。TOPページアドレスにクエリパラメータ(『?pT=0』)がついてるのは何かダサいし(※2)、検索機能は使いづらい(「作品名+出演者」とか「アーティスト名+曲名」といった複合検索ができない)。取り扱い作品数は圧倒的でせっかく業界1位(だよね?)なのに、これでは勿体ない、というか余所に流れちゃうぞ。
どうした、TSUTAYA。

※1
ちなみにGoogleの各種サービスもこんな感じでSSL通信化できますよね。

※2
ていうかSEOの観点では、こういうURLは確か良くないよね。canonical属性も使ってないみたいだし。

0 件のコメント: