考慮到我分析用戶的輸入,這應該是電子郵件地址,到MailAdress類:是否可以通過MailAddress類實現XSS?
var mailString = Request.QueryString["mail"];
var mail = new MailAddress(mailString);
是否有可能離開了跨站點腳本攻擊,如果我輸出的MailAddress對象後以任何方式?例如通過一個的WebForms文字控制:
litMessage.Text = "Your mail address is " + mail.Address;
是否有必要消毒outpout儘管我確信該地址是通過解析字符串有效的電子郵件地址?
從我能收集的郵件地址的RFC是非常複雜的,所以我不確定跨站點腳本是否可以隱藏在.NET認爲有效的郵件地址中。
編輯:
MSDN說>
和<
支架被允許在電子郵件地址:
地址參數可以包含一個顯示名稱和相關的電子郵件地址,如果您附上地址在尖括號中。例如:「湯姆·史密斯<[email protected]>」
所以問題仍然存在,如果這是不夠的XSS攻擊和/或如果MailMessage
類做任何事情來逃避危險的部分。
如果MailAddress類已經確保只接受有效的字符串,那麼使用額外的正則表達式過濾器有什麼意義?我的問題是,如果有效的電子郵件地址可能包含可能以這種方式通過驗證的XSS攻擊。當然,當你說在創建輸出時逃避html字符絕對不是一個壞主意。不過,我想知道如果使用'MailMessage'對象,這種攻擊甚至是可能的。從頭到尾知道可能的攻擊者可能擁有哪些選項。 – magnattic
您在使用MailAddress類時不需要添加正則表達式過濾器。我把它包括在這裏是爲了開發一種消毒劑的完整性。然而,在高度安全的環境中,我們不喜歡信任專有/關閉源代碼,因爲我們無法檢查它是否存在漏洞。出於這個原因,我們寫我們自己的。至於通過MailMessage獲得攻擊,我不知道那裏有任何攻擊,但這並不意味着這是不可能的,特別是如果你以一種作者沒有預料到的方式使用這個類。 –
如果有人攻擊了'MailAddress',他們可能不會放棄它,因爲它在地下值得*很多錢。我剛剛聽說Java 7的黑客以50,000美元的價格出售。一旦被披露,他們就毫無價值。 –