間違いはコピーの時点で起きる
この種の漏えいの多くは攻撃ではありません。プロフィール、ポートフォリオページ、フォーラムの署名を公開する直前に起きるコピー&ペーストのミスです。ブラウザのアドレスバーにはフィードのアドレスが表示されていても、見ているページは「自分のアクティビティ」に感じられるため、コピーされるURLはプロフィールを示すだけのものではなく、リクエストを認証するものになってしまいます。
GitLabの個人アクティビティフィードURLには、フィードリクエストを認証するトークンが含まれています。Source
この確認が重要なのはまさにそのためです。トークンは後から単独で無効化できる別個の秘密情報ではありません。リンクに埋め込まれており、そのリンクこそがこれから公開しようとしているものです。
公開プロフィールURLと認証済みアクティビティフィードURLは目的が異なります。Source
この一文を、このガイド全体の判断ルールとしてください。手元のURLが非公開のフィード内容を取得するために使えるものであれば、見た目がどうであれプロフィールリンクではありません。
ステップ1:手元のリンクがどの種類かを見分ける
判断するためにトークンの形式を理解する必要はありません。必要なのは、そのURLがどのページから生成されたかを知ることです。公開する前に、以下の表を点検チェックリストとして使ってください。
| コピーしたもの | 典型的な兆候 | 公開しても安全か | 対処 |
|---|---|---|---|
| プロフィールページのURL | ログアウト状態で開くと自分のプロフィールが表示される | プロフィール自体が公開なら安全 | これを使う |
| アクティビティフィードのURL | 長いトークン部分を含み、フィードデータを返す | 安全でない | 破棄する。貼り付け、短縮、スクリーンショットも不可 |
| 設定ページやトークンページからのリンク | コピー時に認証済みエリアにいた | 非公開として扱う | プロフィールURLに置き換える |
| 他人から送られたリンク | 出所不明 | 未検証 | 信頼する前にログアウト状態で開く |
2つの限界をはっきり述べておきます。第一に、この表は編集上の点検手順であり、プラットフォームの機能ではありません。GitLabがリンクにラベルを付けてくれるわけではありません。第二に、自分のログイン済みブラウザで問題なく開けるURLは何も証明しません。あなたのセッションが、他人にはないアクセスを提供している可能性があるからです。
何も露出しない実用的なテスト:ログインしていないプライベートウィンドウで候補リンクを開きます。認証を求められる、あるいは他人に読まれたくないフィード内容が返ってくる場合は、そこで止まり、プロフィールページに戻ってアドレスをコピーし直してください。問題のあるURLを「確認」のためにチャット、チケット、公開投稿に貼り付けないでください。
ステップ2:公開プロフィールURLに置き換える
リンクの種類が違うと判断したら、置き換えが安全な対応です。以下の手順なら、非公開URLが保存されうる中間的な場所のどこにも残りません。
- フィードやトークンを含むアドレスが表示されているタブを、再度コピーせずに閉じます。
- フィードへの保存済みブックマークではなく、サイトのインターフェースから通常どおりプロフィールへ移動します。
- プロフィールが公開しようとしているものであること、公開範囲が想定どおりであることを確認します。
- プロフィールページからのみアドレスをコピーします。
- まずプレーンテキストエディタに貼り付け、プロフィール欄に直接貼らないようにします。そうすれば、どこかに送る前に文字列全体を確認できます。
- 貼り付けた文字列を上の表と照合します。名前やパスではなく長い認証情報のように見える部分があれば、破棄してステップ2からやり直します。
- 検証済みのプロフィールURLをプロフィール欄に貼り付け、ログアウトした訪問者に見えるとおりにプロフィールをプレビューします。
ステップ5は形式的なものではありません。プロフィール欄、リッチテキストエディタ、リンクプレビューは、貼り付けた内容を保存したり取得したりすることがあり、トークンを含むURLのプレビュー取得は、リンクがたどる場所をさらに一つ増やすことになります。
ステップ3:フィード自体を公開すべきか決める
プロフィールリンクとフィードリンクは別の問題です。完全に安全なプロフィールURLを持っていても、自分のアクティビティが明かす情報量に不安を感じることはあります。これは公開範囲の判断であり、リンク形式の判断ではありません。人々をプロフィールへ導くものを公開する前に決めておくべきことです。
個人フィードには、選択したアクティビティタブやフィルターに関係なく、参加プロジェクトのアクティビティが含まれます。Source
これは判断を下すうえで重要です。特定のアクティビティを表示させないためにタブやフィルターに頼っているなら、上記のフィードの挙動は、そのフィルターがプライバシーの境界ではないことを意味します。狭い表示なら守られると仮定するのではなく、フィード全体として許容できるかを決めてください。
許容できないと結論づけた場合、次のステップは、設定を一つ変えて終わりにするのではなく、プロフィールの公開範囲を調整した後に何が公開されたままになるかを見直すことです。関連する続きとして、GitLabプロフィールを非公開にして、何が公開されたままか確認するガイドがあり、この判断の公開範囲の側面を扱っています。
すでにリンクを共有してしまった場合
公開したものは、たとえ1分後に削除しても、コピー、キャッシュ、インデックス登録されている可能性があると想定して行動してください。投稿を削除しても、他人や自動システムがすでに作成したコピーは取り戻せません。このガイドはそうでないふりをしません。
露出した認証情報への対処には、サイトが認可するトークンとアカウントの管理機能、またはサポート窓口を使ってください。正確なメニューの経路や利用可能な復旧オプションは、ここで確認した資料では確定していないため、古いインターフェースの記憶に頼った手順をなぞるのではなく、自分のアカウントで確認してください。露出したURLを公開のIssue、助けを求めるソーシャル投稿、第三者サイトに貼り付けないでください。リンクを再現せずに問題を説明してください。
認可された経路で対処した後は、公開した場所を再確認します。各サイトのプロフィール欄、署名、ポートフォリオページ、固定投稿、共有したドキュメントなどです。それぞれの箇所をプロフィールURLに置き換え、編集できなかった場所を記録しておきます。
ユーザー名検索が役立つ場面と、そうでない場面
気がかりなのが、あるハンドルがサイト間でどれだけ使い回されているかであれば、ユーザー名検索で公開されている一致を洗い出して確認できます。TraceSeekは3,000+のプラットフォームを対象とし、製品によれば20-30秒で完了する初回スキャンを無料で提供しています。これはリード獲得のためのステップであり、所有権の証明ではありません。別のサイトで一致するハンドルは他人のものである可能性があり、検索はすべてのアカウントを網羅する一覧でもありません。
検索にできないのは、コピーした特定のURLに認証情報が含まれているかどうかを教えることです。その判断はステップ1の点検から導かれます。2つの作業は分けておいてください。検索は確認する価値のある公開プロフィールを見つけるために使い、リンク種別の確認は何を公開して安全かを決めるために使います。
貼り付ける前のクイックチェックリスト
- URLはフィード、設定、トークンページではなくプロフィールページからコピーした。
- 文字列全体に、長い認証情報のような部分が含まれていない。
- セッションのないプライベートウィンドウで、リンクが想定どおりに開く。
- プロフィール欄の前にプレーンテキストエディタへ貼り付けた。
- ログアウトした訪問者としてプロフィールをプレビューした。
- アクティビティフィード全体を公開してよいか決めた。
- すでにフィードリンクを共有していた場合、認可されたアカウント管理機能かサポートを使い、リンクを再投稿していない。
- 古いリンクが現れたすべての場所を再確認した。
チェックが一つでも外れていれば、安全な既定の対応は何も公開せず、プロフィールページに戻って新しくコピーし直すことです。