なぜSlackはslack-redirを使うのか
ビジネスコラボレーションハブ(公式のサービス説明)として日本でも広く浸透し始めているSlack の外部リンクの扱いに思わず「へ〜」となったので記事にしようと思います。
slack-redir.netとは
Slackのチャンネル(仕事を進める場所)に記事のurlを貼り付けると、自動的に以下の情報を取得し
- サイト名とファビコン
- ページのタイトル
- ページのディスクリプション
カード形式で表示します。
右クリック > 「検証」からソースコードを見て見ましょう。
1 2 3 |
<span class="c-message__body" dir="auto" data-qa="message-text"> <a target="_blank" class="c-link" href="https://slack-redir.net/link?url=https%3A%2F%2Forangelog.site%2Frails%2Finfinite-scrolling%2F" rel="noopener noreferrer">https://orangelog.site/rails/infinite-scrolling/</a> </span> |
anchor tagのhref属性が記事のリンクではなくslack-redir.netを経由し、urlパラメータに記事のリンクが付与されています。
なぜ直接リンクを開かせるのではなく、一度slack-redir.netを経由した後にリンクを開いているのかが気になり、調べていたらSlackのヘルプセンターに理由が記載されてました。
以下、「リファラー情報を管理する 」ページからの引用です:
Web サイトの中には、訪問者を追跡してその訪問者がどこからアクセスしたのかを確認するものもあります。こうした追跡は、リファラー情報と呼ばれます。これはつまり、Slack で共有されたリンクをクリックすることで、そのサイトにワークスペースや OrG の URL が開示される可能性があるということを意味します。
Slack のデフォルト設定では、外部 Web サイトのログからワークスペースや OrG の URL を隠すように設定されています。 Slack でリンクをクリックすると、リダイレクトを経由してページへ移動するため、Slack URL は削除されます。
SlackのワークスペースのURLには会社名などが入っていたりするので、外部のWebサイトからその情報を隠すためにやっているみたいですね。この記事を読んだときは思わず口から「へ〜」と声が出てしまいました(笑)。
ここまでの考えに至ったことがなかったので個人的に結構な衝撃を受けたのと、改めて他のサービスがどういうコードを書いているのかを勉強するのは大事だなと思いました。こういう発見がある時は心からプログラミングの勉強って楽しいなって思います!(基本的には苦行だと思ってます)
ということでまた勉強してきます。
おまけ:rel=”noopener”について
anchor tagのrel属性についている”noopener”がよく分からなかったのですが、下記の記事に詳しく記載されているのでそちらをご覧ください:
target=”_blank” で開くリンクには rel=”noopener” をつける
フィッシング対策見たいですね。