2013/12/11

網址特殊字元轉換

最近發現有釣魚連結將全形句號當作半形句號使用,但貼到瀏覽器網址列後,瀏覽器卻會自動轉成正常的網址格式。

如使用全形符號:
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:「。」

以後要判斷網址是否正確時,還是把這段規則一起加進去吧。



Ref:
RFC 3490
http://www.ietf.org/rfc/rfc3490.txt

沒有留言:

張貼留言