最近發現有釣魚連結將全形句號當作半形句號使用,但貼到瀏覽器網址列後,瀏覽器卻會自動轉成正常的網址格式。
如使用全形符號:
http://blog.zeroplex。tw
貼到瀏覽器以後會被自動轉換為:
http://blog.zeroplex.tw
這個方法可以繞過一些論壇、網站的檢查工具,雖然不會被系統加上 <a>,但若有人手動複製連結到瀏覽器上,還是被釣魚。
實在不解為什麼瀏覽器要這麼自作聰明,於是下載了 Firefox source code 來看。
在 grep “。” 找到的資料多與網址轉換無關,但可以發現一些符號對應表,其中程式多半以「x3002」表示,且註記都會加上「full stop」。改 grep 3002 | grep \.c,可以發現 netwerk/dns/nsIDNService.cpp 是與 DNS 有關,且同時提到 U+3002、「full stop」,打開來看 line 642:
// RFC 3490
// 1) Whenever dots are used as label separators, the following characters
// MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full
// stop), U+FF0E (fullwidth full stop), U+FF61 (halfwidth ideographic full
// stop).
意思是當遇到以下符號時,直接視為英文的句點「.」,也就是網址打全形符號自動轉換已在 RFC 3490 規定。
- U+002E:「.」
- U+3002:「。」
- U+FF0E:「.」
- U+FF61:「。」
以後要判斷網址是否正確時,還是把這段規則一起加進去吧。