IT

.Net에 URL validator가 있습니까?

itgroup 2023. 9. 15. 20:57
반응형

.Net에 URL validator가 있습니까?

에서 URL을 확인할 수 있는 방법이 있습니까?넷, ASP.넷, 또는 ASP.순 MVC?

을 사용하여 URL의 유효성을 검사할 수 있습니다.

public bool IsValidUri(string uri)
{
    Uri validatedUri;
    return Uri.TryCreate(uri, UriKind.RelativeOrAbsolute, out validatedUri);
}

댓글을 보면 다음과.TryCreate한 단계 아래로 처리하는 예외를 이동할 뿐입니다.하지만 소스코드를 확인해보니 그렇지 않습니다.안에 시도/잡히지 않음TryCreate, 던져서는 안 되는 맞춤 파서를 사용합니다.

지금까지 제공된 답변은 스킴을 확인하지 않아 불필요한 모든 입력을 허용하여 자바스크립트 주입에 취약해질 수 있습니다(The Cloudless Sky의 코멘트 참조).

URI는 개체의 고유한 ID일 뿐입니다."C:\Test"는 유효한 URI입니다.

프로젝트에서 저는 다음 코드를 사용했습니다.

/// <summary>
/// Validates a URL.
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private bool ValidateUrl(string url)
{
    Uri validatedUri;

    if (Uri.TryCreate(url, UriKind.Absolute, out Uri validatedUri)) //.NET URI validation.
    {
        //If true: validatedUri contains a valid Uri. Check for the scheme in addition.
        return (validatedUri.Scheme == Uri.UriSchemeHttp || validatedUri.Scheme == Uri.UriSchemeHttps);
    }
    return false;
}

허용할 스킴을 정의하고 그에 따라 코드를 변경합니다.

uri를 사용할 수 있습니다.IsWellFormedUriString, 이를 위해 직접 함수를 만들 필요가 없습니다.

public static bool IsWellFormedUriString(string uriString, uriKind uriKind);

uriKind는 다음과 같습니다.

UriKind.RelativeOrAbsolute 
UriKind.Absolute
UriKind.Relative

자세한 내용은 http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx 을 참조하십시오.

VB에 좋은 코드가 필요한 경우.아르잔에서 온 순

    'Validates a URL.
    Function ValidateUrl(url As String) As Boolean
        Dim validatedUri As Uri = Nothing
        If (Uri.TryCreate(url, UriKind.Absolute, validatedUri)) Then
            Return (validatedUri.Scheme = Uri.UriSchemeHttp Or validatedUri.Scheme = Uri.UriSchemeHttps)
        End If
        Return False
    End Function

Try/Catch 기능을 사용하는 것보다 더 빠른 방법(아마도)은 Regex를 사용하는 것입니다.만약 당신이 1000개의 URL을 확인해야 한다면, 예외를 여러 번 잡는 것은 느릴 것입니다.

여기 샘플 리젝스 링크가 있습니다. 구글을 이용하여 더 많은 정보를 찾으세요.

static bool IsValidUri(string urlString) {
   try {
      new Uri(urlString);
      return true;
   } catch {
      return false;
   }
}

언급URL : https://stackoverflow.com/questions/927847/is-there-a-url-validator-on-net

반응형