回答
發佈了ASP.NET Web窗體上的任何腳本標籤將導致您的網站並拋出未處理的異常。
你可以使用一個asp正則表達式驗證器來確認輸入,只要你的javascript被繞過,確保你用if(IsValid)子句包裝你的代碼。 如果您的客戶端javascript被繞過並且腳本標記被髮布到您的asp.net表單,則asp.net將拋出未處理的異常。
您可以使用類似:
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>
防止XSS是驗證輸入一個不同的問題。
關於XSS:您不應該嘗試檢查對於XSS或相關漏洞的輸入。在將字符串插入到某些字符爲「魔術」的不同語言中時,例如在以HTML或SQL插入字符串時,應該通過正確轉義避免XSS漏洞利用,SQL注入等。例如像O'Reilly這樣的名字是完全有效的輸入,但如果插入到SQL中則可能導致崩潰或更糟。您無法通過驗證輸入來防止這類問題。
確認用戶輸入有意義,以防止丟失或格式錯誤的數據,例如。用戶在郵政編碼字段中寫「asdf」等等。 WRT。電子郵件地址,語法雖然非常複雜,但它並沒有提供多大的好處來驗證它使用正則表達式。只需檢查它是否包含「@」。
您可以使用RegularExpression驗證程序。 ValidationExpression屬性具有一個按鈕,您可以在Visual Studio的屬性面板中按下按鈕,以獲取列表中很多有用的表達式。他們使用的電子郵件地址的一個是:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
請注意,這不包括一些有效的電子郵件地址。 – Sam 2013-04-10 23:42:50
驗證,這是一個真實的電子郵件地址是更難。
確認語法正確的正則表達式可能很長(例如參見http://www.regular-expressions.info/email.html)。確認電子郵件地址的最佳方式是向用戶發送電子郵件,並通過單擊鏈接來驗證用戶是否收到了電子郵件(大多數註冊系統的工作方式),以便用戶回覆。
在我們的代碼中,我們有一個從BaseValidator類繼承的特定驗證器。
該類執行以下操作:
- 驗證對正則表達式的E-mail地址。
- 在域名的MX記錄上進行查找,以確保至少有一臺服務器要提供給該域。
這是最接近你可以得到驗證沒有實際發送人的電子郵件確認鏈接。
下面是我剛剛根據Simon Johnson的想法創建的基本電子郵件驗證程序。只需要添加DNS查找的額外功能即可。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Web.UI;
namespace CompanyName.Library.Web.Controls
{
[ToolboxData("<{0}:EmailValidator runat=server></{0}:EmailValidator>")]
public class EmailValidator : BaseValidator
{
protected override bool EvaluateIsValid()
{
string val = this.GetControlValidationValue(this.ControlToValidate);
string pattern = @"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)[email protected][a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$";
Match match = Regex.Match(val.Trim(), pattern, RegexOptions.IgnoreCase);
if (match.Success)
return true;
else
return false;
}
}
}
你應該總是做服務器端validaton。
public bool IsValidEmailAddress(string email)
{
try
{
var emailChecked = new System.Net.Mail.MailAddress(email);
return true;
}
catch
{
return false;
}
}
- 1. OSCLASS:驗證電子郵件地址
- 2. 驗證電子郵件地址
- 3. 電子郵件地址輸入驗證
- 4. ZF2電子郵件地址驗證器
- 5. 電子郵件地址驗證狀態
- 6. 驗證電子郵件地址
- 7. iOS電子郵件地址驗證
- 8. ListView驗證電子郵件地址
- 9. 驗證電子郵件地址(域名)
- 10. 在Dart驗證電子郵件地址?
- 11. 電子郵件地址驗證
- 12. 如何驗證電子郵件地址
- 13. 電子郵件地址驗證,如何?
- 14. 如何驗證電子郵件地址
- 15. C#電子郵件地址驗證
- 16. 驗證電子郵件地址失敗
- 17. 目標電子郵件地址驗證
- 18. 驗證ASP.NET中的電子郵件地址域
- 19. 驗證ASP.NET C#上的自定義ac.uk地址的電子郵件地址
- 20. 重寫jQuery驗證插件電子郵件地址驗證
- 21. 電子郵件地址驗證與JavaScript不工作在ASP.net
- 22. ASP.Net - 使用正則表達式驗證電子郵件地址?
- 23. ASP.NET驗證比較匹配2個電子郵件地址
- 24. 使用電子郵件地址進行Asp.Net身份驗證
- 25. 554郵件被拒絕:電子郵件地址未驗證
- 26. Quickblox,發送電子郵件給新用戶以驗證電子郵件地址
- 27. 如何在MVC中發送電子郵件地址驗證電子郵件?
- 28. 驗證電子郵件地址而不發送電子郵件給用戶
- 29. html helper的電子郵件驗證 - ASP.Net
- 30. Rails驗證阻止電子郵件地址和電話號碼
他說,它的ASP.NET 1.1,支持在該版本驗證控件? – Shimmy 2009-07-13 08:31:31
RegularExpressionValidators在ASP.NET 1.1提供http://msdn.microsoft.com/en-us/library/eahwtc9e%28v=VS.71%29.aspx – Diskdrive 2011-04-27 00:42:27
我用這句話,但奇怪的是它似乎讓空電子郵件......?我還必須添加一個必需的字段驗證程序。 – UmaN 2012-05-14 07:38:04