Top 10 測試目標URL 與特殊字元

URL 內嵌帳密

有些系統仍會產生 https://user:pass@host/... 這種格式的網址。這裡只寫成純文字展示,不是真的可點的連結——URL 裡的憑證是憑證,不是位址的一部分。

必須拒絕

範例(假帳密,僅供展示,不是可點連結)

https://demo:not-a-real-password@example.invalid/order/55120

demo:not-a-real-password 是刻意寫的假值;example.invalid 是保留給文件用途、永遠不會被解析的網域(RFC 2606)。

這一頁在測什麼

userinfo 不是路徑的一部分user:pass@ 這一段叫 userinfo,語意是「用這組帳密去存取後面的主機」,不是網址身分的一部分。
為什麼必須拒絕接受這種格式等於把一組明文憑證存進監控設定、log、甚至通知內容裡——這是憑證外洩,不是位址正規化的問題。
normalizeSafeHttpUrl 該做的事偵測到 URL 含 userinfo 時應直接拒絕整個輸入,不得剝掉 userinfo 後繼續處理剩下的網址,也不得把帳密的任何片段寫進任何持久化的欄位。
平台必須不做的事:把 userinfo 剝掉之後就當作乾淨的網址繼續使用,或是把帳密的任何片段寫進 log、contract 或通知。