From 7afc7345c1c0189c3e8f337f01d6038f527fbd5c Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Fri, 13 Nov 2020 18:02:59 +0330 Subject: [PATCH] url validation fix --- .../Implementation/AudioNarrationService.cs | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/RMuseum/Services/Implementation/AudioNarrationService.cs b/RMuseum/Services/Implementation/AudioNarrationService.cs index c866d5b7..59563449 100644 --- a/RMuseum/Services/Implementation/AudioNarrationService.cs +++ b/RMuseum/Services/Implementation/AudioNarrationService.cs @@ -158,18 +158,28 @@ namespace RMuseum.Services.Implementation return $"نام فقط باید شامل حروف فارسی و فاصله باشد. اولین حرف غیرمجاز = {s}"; } - s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); - - if (s != "") + if (!string.IsNullOrEmpty(p.AudioArtistUrl)) { - return $"نشانی وب خوانشگر شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + bool result = Uri.TryCreate(p.AudioArtistUrl, UriKind.Absolute, out Uri uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + + if (!result) + { + return $"نشانی وب خوانشگر نامعتبر است."; + } } - s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioSrcUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); - if (s != "") + if(!string.IsNullOrEmpty(p.AudioSrcUrl)) { - return $"نشانی وب منبع شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + bool result = Uri.TryCreate(p.AudioSrcUrl, UriKind.Absolute, out Uri uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + + if (!result) + { + return $"نشانی وب منبع نامعتبر است."; + } } + return ""; } @@ -995,19 +1005,31 @@ namespace RMuseum.Services.Implementation return $"نام خوانشگر فقط باید شامل حروف فارسی و فاصله باشد. اولین حرف غیرمجاز = {s}"; } - s = LanguageUtils.GetFirstNotMatchingCharacter(p.ArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); + s = LanguageUtils.GetFirstNotMatchingCharacter(p.ArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-0123456789%"); - if (s != "") + if(!string.IsNullOrEmpty(p.ArtistUrl)) { - return $"نشانی وب خوانشگر شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + bool result = Uri.TryCreate(p.ArtistUrl, UriKind.Absolute, out Uri uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + if (!result) + { + return $"نشانی وب خوانشگر نامعتبر است."; + } } + - s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioSrcUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); - if (s != "") + s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioSrcUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-0123456789%"); + + if(!string.IsNullOrEmpty(p.AudioSrcUrl)) { - return $"نشانی وب منبع شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + bool result = Uri.TryCreate(p.AudioSrcUrl, UriKind.Absolute, out Uri uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + if (!result) + { + return $"نشانی وب منبع نامعتبر است."; + } } - + s = LanguageUtils.GetFirstNotMatchingCharacter(p.FileSuffixWithoutDash, LanguageUtils.EnglishLowerCaseAlphabet); if (s != "")