ASP.NET에 대한 이메일 주소 유효성 검사
ASP.NET 양식에서 이메일 주소의 유효성을 검사하기 위해 무엇을 사용합니까? XSS 익스플로잇이 포함되지 않았는지 확인하고 싶습니다.
이것은 ASP.NET 1.1입니다.
ASP.NET 웹 양식에 게시 된 모든 스크립트 태그로 인해 사이트에서 처리되지 않은 예외가 발생합니다.
asp 정규식 유효성 검사기를 사용하여 입력을 확인할 수 있습니다. 자바 스크립트가 우회되는 경우를 대비하여 메서드 뒤에있는 코드를 if (IsValid) 절로 래핑했는지 확인하세요. 클라이언트 자바 스크립트가 우회되고 스크립트 태그가 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>
다음은 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]+)*)?@[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;
}
}
}
업데이트 : 원래 정규식을 사용하지 마십시오. 더 완전한 새 샘플을 찾으십시오.
RegularExpression 유효성 검사기를 사용할 수 있습니다. ValidationExpression 속성에는 많은 유용한 식 목록을 가져 오는 Visual Studio의 속성 패널에서 누를 수있는 버튼이 있습니다. 이메일 주소에 사용하는 것은 다음과 같습니다.
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
실제 이메일 주소인지 확인하는 것은 훨씬 더 어렵습니다.
구문이 올바른지 확인하는 정규식은 매우 길 수 있습니다 ( 예 : http://www.regular-expressions.info/email.html 참조 ). 이메일 주소를 확인하는 가장 좋은 방법은 사용자에게 이메일을 보내고 사용자가 링크를 클릭하여 이메일을 수신했는지 확인하여 회신하도록하는 것입니다 (대부분의 가입 시스템 작동 방식).
우리 코드에는 BaseValidator 클래스에서 상속 된 특정 유효성 검사기가 있습니다.
이 클래스는 다음을 수행합니다.
- 정규식에 대해 전자 메일 주소의 유효성을 검사합니다.
- 배달 할 서버가 하나 이상 있는지 확인하기 위해 도메인의 MX 레코드를 조회합니다.
이것은 실제로 그 사람에게 전자 메일 확인 링크를 보내지 않고도 유효성 검사에 가장 가까운 방법입니다.
XSS 방지는 입력 유효성 검사와는 다른 문제입니다.
XSS 관련 : XSS 또는 관련 악용에 대한 입력 을 확인하려고 시도해서는 안됩니다 . HTML이나 SQL에 문자열을 삽입 할 때와 같이 일부 문자가 "마법"인 다른 언어로 문자열을 삽입 할 때 올바르게 이스케이프하여 XSS 악용, SQL 삽입 등을 방지해야합니다. 예를 들어 O'Reilly와 같은 이름은 완벽하게 유효한 입력이지만 SQL에 이스케이프되지 않은 상태로 삽입하면 충돌이 발생하거나 더 나빠질 수 있습니다. 입력의 유효성을 검사하여 이러한 종류의 문제를 방지 할 수 없습니다.
Validation of user input makes sense to prevent missing or malformed data, eg. a user writing "asdf" in the zip-code field and so on. Wrt. e-mail adresses, the syntax is so complex though, that it doesnt provide much benefit to validate it using a regex. Just check that it contains a "@".
You should always do server side validaton as well.
public bool IsValidEmailAddress(string email)
{
try
{
var emailChecked = new System.Net.Mail.MailAddress(email);
return true;
}
catch
{
return false;
}
}
Quick and Simple Code
public static bool IsValidEmail(this string email)
{
const string pattern = @"^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|" + @"([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)" + @"@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$";
var regex = new Regex(pattern, RegexOptions.IgnoreCase);
return regex.IsMatch(email);
}
참고URL : https://stackoverflow.com/questions/182542/email-address-validation-for-asp-net
'Program Club' 카테고리의 다른 글
| Ruby-문자열에서 일부 문자를 선택하는 방법 (0) | 2020.11.16 |
|---|---|
| ScrollView 내에서 스크롤 할 수없는 ListView (0) | 2020.11.16 |
| SQL Server에 null 값을 어떻게 삽입합니까? (0) | 2020.11.16 |
| TLB 슛 다운이란 무엇입니까? (0) | 2020.11.16 |
| HW kbd 키보드 포커스 iOS로 설정하지 못했습니다 (null). (0) | 2020.11.15 |