短網址的功能就是把目的地收起來,換成一串乾淨簡短的字串,代價是收到的人看不到原來的網址是什麼。
這對分享的人是方便,但對想騙人的人也是方便,而且是同一個功能,不是兩件事。
所以能做的是從不同面向把風險一層一層降低,每一層都是在安全與便利之間權衡,沒辦法完全鎖死或全開,兩邊都要顧及。
收到一條看不出目的地的連結,想先還原它、查清楚它到底連去哪,是很合理的動作。詐騙連結確實有不少會使用短網址。
提供這個服務的人,責任就從這裡開始。
toui 在整個安全架構設計上,用幾層來疊起防護。
不用登入就能縮一條網址,這是這個服務的入口,提供試用的便利性。但一條不需要任何身分就能建立、又永遠有效的連結,取得的成本就變得太低了。
所以匿名建立的短連結我們設定三十天的期限,時間到就失效。登入之後建立的連結永久保存,不分方案。
三十天是在可用性與濫用之間取得的平衡。臨時要傳一條連結給人、活動貼一週、印一張短期的傳單,三十天都夠;而想拿一批連結,長期欺詐的人,時間一過就自動失效了。
同一層還有一道人機驗證。對真的要縮一條網址的人,那是多等幾秒;對想用程式大量產生連結的人,那是一道要繞的牆。
這一層擋的不是內容,是成本。它讓「大量建立、慢慢使用」這件事變貴。
這個天數也不是定死的,日後有什麼惡化的現象,toui 會往安全那邊走,把時間縮短。
新連結建立的當下會過 Google Safe Browsing,比對惡意程式與釣魚。為了不讓有人先用正常的網址新增,之後再更替成有害的網址,在有異動時我們也都會掃描。另外也有擋掉會不斷循環的轉址迴圈,也不讓短碼拿去假冒知名品牌的名字。
這是透過產業共用的資訊來防護,畢竟惡意網址的情報要不斷更新、數量夠大才有價值。這一層的好處是快而且便宜,缺點很明確,它擋的是已知的東西。一個今天才註冊、還沒有被任何資料庫收錄的網域,它不會警示。
所以共用情報之外,toui 自己另外做了一層檢查,專門去提高「還沒被收錄但有問題」那一類被發現的機會。它不取代前面那一層,是加在後面。
即使這樣,還是有東西會穿過去。那正是下面兩層要接的。
toui.io/{短碼}/qr 這一頁公開顯示這條連結的目的地,不用登入,不用註冊,收到連結的人自己就能開。
這一頁本來是給要把連結印出去的人拿 QR Code 用的,但它同時把目的地攤在那裡。一條連結是否可疑,與其交給系統判斷,不如把判斷的材料直接交給使用者,那個網域是否正常,有時就是得讓他看一下原來的網址。
同一個設計也讓收到連結的人不必先點下去才知道要去哪。要確認一條連結,卻得先點開它,這個矛盾正是各種短網址還原工具存在的理由。
自動檢查擋得掉黑白分明的,剩下一片灰的。有些頁面內容看起來正常,意圖卻不是那樣,那種不對勁很難寫成一條規則,可是人眼一看就覺得不對。
那個「一眼覺得不對」是這一層的價值,機器現在做不到。
所以檢舉的入口對所有人開放,不用登入。這一層原本只受理多連結專頁,後來改成一體適用的濫用檢舉,當時有幾個決定值得說。
收完整網址,不收短碼。 用自訂網域的客戶,他的訪客看到的是 go.acme.com/xxx,那個人不知道背後是 toui。跟他要「toui 的短碼」,等於要他提供一個他不可能知道的東西。
不是我們的網域也收。 有人拿別家的短連結來報,一樣收下,只在通知上標記。對一個正在慌的人,「這條不是我們的」本身就是有用的資訊。
通知裡帶著那條連結當下的目的地。 判讀的人不必去點那條可疑連結,就知道它指向哪裡。

上面四層加起來,toui 能做的是把一條連結攔在被點開之前、把判斷的材料交給使用者、在事後把它停掉。停掉之後那條連結立刻就不會再把人送過去。
做不到的也很明確。連結有害造成實際損失時,toui 只能停用連結避免它繼續傳播,要再追查或是公告周知,仍得需要專業的機構。
數發部的網路詐騙通報查詢網可以輸入網址作比對,一方面驗證是否有異常,另一方面也可登錄有害網站公告周知。
涉及金錢損失或已經受害,可以撥打 165 或是到內政部警政署 165 全民防騙網報案或檢舉,公權力才是解決受害情況的有力管道。
這兩個地方查不到,也不代表那條連結安全。資料庫裡只有被通報過的東西,而新的詐騙網址每天都在出現。
到這裡就是 toui 的極限,剩下的判斷回到人身上。
在服務的每一個層面上,為你的使用者評估風險與防護。那些風險在你設計那個功能的當下就已經在了,不是出事才開始存在。
你得先知道每一層漏掉的是什麼,那就是下一層要接的東西。縱深防禦不是每一層都要完美,是每一層都知道自己的邊界在哪。