個人開発で短縮URLサービスを作っている。
クリック分析、UTMパラメータ自動付与、OGPプレビュー。企業向けのBitlyみたいなやつを、個人で安く使える版として開発した。
完成した時、嬉しくて社内Slackで共有した。
「短縮URLサービス作りました! よかったら使ってください → https://picoli.site/demo」
5分後、セキュリティチームのチャンネルにメンションが飛んだ。
「#general にフィッシングURLが投稿されています。至急対応お願いします」
何が起きたのか
通報したのは、入社3ヶ月の新人だった。
彼の言い分はこう。
「見たことないドメインの短縮URLが貼られていた。短縮URLはフィッシングの常套手段。セキュリティ研修で『怪しいリンクは踏むな、通報しろ』と教わった。だから通報した」
100点満点の行動だった。
自分が悪い。見知らぬドメインの短縮URLを社内チャットに無断で貼るのは、セキュリティ的にはアウト。
セキュリティチームの反応
セキュリティチームのリーダーが自分に連絡してきた。
「これ、本当にあなたが作ったサービスですか?」
「はい。個人開発です」
「ドメインは picoli.site ? リダイレクト先は quikr.site ?」
「はい」
「......2つもドメインがあるんですか。なぜ?」
技術的な理由を説明した。短縮URLサービスでは、短縮用のドメインとリダイレクト処理用のドメインを分けることがある。短いドメインほどURLが短くなるし、リダイレクト用のドメインは裏方なのでSEO的に分離した方がいい。
「なるほど。でも社内的には『知らないドメインの短縮URL = 危険』というルールなので、今後は社内で共有する時は事前に申請してください」
正論。
短縮URLがフィッシングに見える問題
短縮URLサービスの開発者として、これは避けて通れない問題。
なぜ短縮URLは怪しいのか
-
遷移先がわからない:
picoli.site/abc123を見ても、どこに飛ぶかわからない - フィッシングの常套手段: 悪意あるサイトへの誘導に短縮URLが使われる
-
ドメインの信頼性:
bit.lyやt.coは信頼されているが、個人開発のドメインは信頼がゼロ
自社での対策
この事件をきっかけに、いくつかの機能を追加した。
リンクプレビュー機能: 短縮URLにアクセスする前に、遷移先のURLとOGP情報を確認できるプレビューページを用意した。picoli.site/abc123+ のように末尾に + を付けるとプレビューが表示される。
UTMパラメータの透明化: クリック分析にUTMパラメータを使っているが、ユーザーにはどんなパラメータが付与されるか開示するようにした。
リンクのスキャン: 新規作成されたリンクの遷移先をGoogle Safe Browsing APIでスキャンして、フィッシングサイトへの短縮URLの作成をブロックする機能。
社内での使われ方
事件から1ヶ月後。セキュリティチームの承認を得て、改めて社内でPicoliを紹介した。
今度は「フィッシングです」とは言われなかった。
意外だったのは、エンジニアよりもマーケティングチームと営業チームに刺さったこと。
マーケ: 「SNS投稿のリンクにUTMパラメータを毎回手打ちしてたの、自動でやってくれるの最高」
営業: 「お客さんに送った資料のリンク、誰がクリックしたか分かるの便利」
エンジニア: 「BitlyかTinyURLでよくない?」
エンジニアは辛辣だった。
個人開発の短縮URLサービスで学んだこと
- 信頼は機能じゃなくてブランドで決まる: bit.lyと同じ機能を作っても、知名度がないドメインは怪しまれる
- セキュリティとUXのトレードオフ: プレビュー機能はセキュリティ的に正しいが、ワンクリックで飛べないのはUXが悪い
- ユーザーはエンジニアとは限らない: 技術者より非技術者の方がニーズが大きかった
短縮URLサービスは小さなプロダクトだけど、リダイレクトの最適化、OGPのハンドリング、クリック分析のリアルタイム処理など、技術的に面白いポイントが多い。
個人開発でURLの分析や管理をやりたい人は、ぜひ試してみてほしい。