本文へ移動
cutty.dev
All posts

パスワード付きリンクの安全性 — クリックしたときに何が起こるか

短縮URLにパスワードを追加できます。専門用語を使わずに、その仕組みや、なぜそれを行う価値があるのかを分かりやすく解説します。

パスワード付きリンクに関するチュートリアルの半分は、それが「追加のセキュリティレイヤー」であるという一文から始まります。そして、それだけで終わってしまいます。私の考えでは、それはこれに関して言えることの中で、最も重要ではない事柄です。

なぜなら、「セキュリティレイヤー」という言葉は何の解説もしてくれないからです。そのパスワードに何が起きるのか、誰がそれを見ることができるのか、あるいはいつそれが意味をなすのかさえ教えてくれません。そして、それらこそが「パスワードを追加」をクリックする前に自問すべき唯一の問いなのです。

それでは、順番に。

リンクのパスワードは、門の南京錠とは別物です

人々は、パスワードがあればリンクを完全に封鎖できると考えています。しかし、実際はそうではありません。パスワード付きリンクのセキュリティは、むしろコンサートのチケットのようなものです。チケットを持っている人は入場できます。そして、そのチケットを誰かに譲れば、その人もまた誰かを中に入れることができるのです。

それは欠陥のように聞こえます。そうではありません。単に、このメカニズムが何のために使われるのかを知る必要があるだけです。

本当に役に立つ3つの状況:

プレミアムクライアント向けの料金表、あるいは世界に公開される前のベータ版ドキュメント。パスワードのないこのようなリンクは、遅かれ早かれGoogleに掲載されるか、誰かの手に渡ってしまうことになります。

有効期限付きのコンテンツ。金曜日限定のオファー。参加者専用のカンファレンス資料。パスワードはリンクを制御された入り口に変えます — 誰かが偶然見つけたのではなく、あなたから受け取ったものであることがわかるようにするためです。

完全に公開して投稿するものの、状況を把握しておきたいもの。リンクは拡散される可能性があります。パスワードがなければ、誰もアクセスできません。

そして、このガイドが省略すべきではなかったもの

フォームにパスワードを入力します。その瞬間、それは消えてしまいます。文字通りです。「tajne123」と設定したことは、ボタンを離す前に、読み取れる形では存在しなくなります。

データベースには何が残るのでしょうか?パスワードではありません。その後に続く指紋です。専門的には「ハッシュ」と呼ばれます。あなたが入力したものと全く同じものが入力されたときにのみ、あなたのパスワードと一致する文字列です。それ自体では何も明かしません。

はっきりと言っておきます、これは重要なことだからです。サービスの運営者である私には、あなたのパスワードを読み取る手段がありません。それは私が親切だからではありません。物理的に読み取るべきものが存在しないからです。もし誰かがデータベースに侵入したとしても、持ち出せるのはこれらのハッシュの塊だけです。

これを計算するアルゴリズムは、意図的に低速に設計されています。「遅い」というのは不満のように聞こえるかもしれませんが、これは利点なのです。データベースを盗んだ者が、たった一つのパスワードを推測するために、途方もない時間を費やさなければならないようにするためです。それは秒単位ではなく、年単位の話なのです。

反対側からのクリック

誰かがあなたのリンクを受け取り、クリックします。すぐに目的地にたどり着く代わりに、次のような画面が表示されます:「このリンクはパスワードで保護されています」、入力フィールド、ボタン。

入力します。サーバーは、入力された内容と保存されている指紋を比較します。一致していますか? 24時間有効なセッショントークンを受け取ります。その後24時間は、何も入力することなくリンクに戻ることができます。覚えている必要も、苦労する必要もありません。

一致しませんか?エラーです。同じIPアドレスから5回間違えると、アクセスは5分間ブロックされます。パスワードを次々と試そうとするボットは、壁に突き当たることになります。

ここには単に存在しないもの

パスワードを平文で保存することはありません。どこにも。エラーを探す際に見るログにさえも、保存しません。

私たちはメールでパスワードを送信しません。つまり、もし誰かがパスワードを忘れても、私はその内容を知らないため、お送りすることはできません。以前と同じ方法で、ご自身で送信していただく必要があります。

また、パスワードを外部に渡すことはありません。いかなる分析、マーケティング、A/Bテストも、これらのデータに触れることはありません。(これはここだけでなく、cutty.dev 全体に適用される原則です。)

違いを生む2つの習慣

一つ目:パスワードを思いつきで考えないこと。会社名に設立年を組み合わせることは、あなたのことを知っている誰にとっても素晴らしいアイデアです。ブラウザ上のジェネレーターを使えば、一瞬でより良いものを生成できます。

2つ目、より重要なこと:パスワードをリンクと同じ方法で送らないでください。リンクをメールで送りましたか?では、パスワードはSMSで送ってください。あるいはその逆でも構いません。重要なのは、一方の通信手段が傍受されても、すべての情報が漏洩しないようにすることです。

ほとんどの人が知らないちょっとしたコツ:同じアドレスに繋がるリンクを、それぞれ異なるパスワード(識別子)を使って複数作成することができます。5人にアクセス権を与える際、一人ひとりに個別のリンクを渡します。もし一人が去ることになったら?その人のリンクだけをブロックすれば、他の人は全く気づきません。

新しいリンクを作成することなく、パスワードを変更できます。パネルの「編集」から、新しいパスワードを入力してください。注意:すべての有効な24時間セッションは直ちに終了します。全員がパスワードを再入力する必要があります。

事前に知っておくべき境界線

コンサートのチケットの話に戻りましょう。パスワードは検索エンジンや、偶然訪れた客から守ってくれます。しかし、パスワードを知っていて、それを世界中に共有しようと決めた人物から守ってくれるわけではありません。

もしあなたのシナリオが「まさにこの一人だけに、それ以外の人には見せたくない」というものであれば、パスワードだけでは不十分です。ここではアカウント、ログイン、そして認可が必要になります。それはまた別の次元、別の問題です。

でも、手を挙げて、実際にこのようなシナリオになることがどれくらいありますか? 私の経験では、めったにありません。ほとんどの場合、単に「通りすがりの誰かにここに来てほしくない」というだけです。そして、その理由だけで十分すぎるほどです。

中身がどのようになっているかを確認したい場合は、リンクを作成する際に「詳細オプション」を展開し、「パスワードを追加」にチェックを入れてください。あとは自動的に行われます。