NTP 伺服器主機名驗證正則表達式
我想對 NTP 伺服器主機名進行基本語法驗證。(例如,我希望
%^$&"
是語法上無效的 NTP 伺服器主機名。)我想做這個基本驗證的原因是因為我正在建構一個 Web 應用程序來配置伺服器。該應用程序向使用者呈現一個表單,其中一個欄位是
NTP server hostname
。我想在發送任何伺服器配置之前在瀏覽器中進行快速驗證,部分是為了避免 XSS 攻擊,部分是為了向使用者提供快速回饋。我在這裡找到了一個驗證 DNS 主機名的正則表達式。
NTP 伺服器主機名的語法必須遵守什麼 RFC?DNS 主機名正則表達式是否也會驗證 NTP 伺服器主機名?
正則表達式可能能夠驗證主機名是否符合 RFC 之一,但它無法驗證主機名是否有效、是否存在或是否解析為執行 NTP 伺服器的 IP 地址。
正則表達式是實現我認為您想要實現的目標的一種不好的方式,儘管您實際上並沒有說明您想要實現的目標。隨時將此添加到您的問題中。
更好的方法是對主機名執行 DNS 查找並驗證它是否解析為 IP 地址(即 IPv6 或 IPv4),並且當您在埠 123 上連接到該 IP 地址時,您會獲得有效的 NTP 協議響應。
回答其他問題,NTP 與主機名完全無關。NTP 伺服器將偵聽 IP 地址,但它不知道您是通過使用 DNS 查找主機名還是通過將原始 IP 地址提供給您的 NTP 客戶端來獲得該 IP 地址。
這意味著,通過擴展,主機名就是主機名。Web 伺服器主機名、電子郵件伺服器主機名和 NTP 伺服器主機名之間沒有區別。您在 StackOverflow 答案中找到的正則表達式將用於驗證其表面上有效的基本目的,但請記住,您的使用者可以輕鬆輸入 IP 地址並期望它工作。
如果是我進行此驗證,我仍然會進行 DNS 查找,但您應該根據問題所在提供不同的回饋。NTP 連接將是一個很好的補充。