場景:支持內容中超鏈接的應用程序。該應用程序具有代碼來執行,看起來像這樣的超級鏈接:如何區分超鏈接和本地執行的任何東西?
Process.Start(href); // href is the link, e.g. "http://www.google.com"
問題:用戶可以設置該字符串中的任意內容和應用程序需要消毒,並禁止非網址,如「foo.exe的「這可能是本地命令或可執行文件。什麼是「正確」的方式來做到這一點?注意:我們是而不是試圖做http黑名單。
到目前爲止,我們正在考慮將其解析爲System.Uri,並檢查是否存在非空的uri Scheme,例如, HTTP://。但是,由於這是一個潛在的安全問題(用戶使用url創建文檔並將文檔發送給點擊該URL的其他人),我們想知道安全專家建議的內容。例如,具有file://方案的url也可能有問題。
編輯:這是我認爲任何支持超鏈接的應用程序(瀏覽器,文字處理器,編輯器等)必須處理的。我很想知道標準行爲是什麼。