Input Data Validation in C# - Data Validation Service Implementation

Data Validation Service


 public class DataValidationService : IDataValidationService
    {
         private readonly IValidator _validator;

         public DataValidationService()
        {
            _validator = new Validator();

            LoadCreditCardRules(_validator);
            LoadStringRules(_validator);
        }

        public bool IsValidCreditCard(CreditCardType type, string number)
        {
            switch (type)
            {
                case CreditCardType.AmericanExpress:
                    return _validator.GetRule(ValidationRules.AmericanExpress).IsValid(number);
                case CreditCardType.Maestro:
                    return _validator.GetRule(ValidationRules.Maestro).IsValid(number);
                case CreditCardType.MasterCard:
                    return _validator.GetRule(ValidationRules.MasterCard).IsValid(number);
                case CreditCardType.Visa:
                    return _validator.GetRule(ValidationRules.Visa).IsValid(number);
                case CreditCardType.VisaElectron:
                    return _validator.GetRule(ValidationRules.VisaElectron).IsValid(number);
                default:
                    return false;
            }
        }

        public bool IsValidStringByVulnerability(VulnerabilityType type, string text)
        {
            switch (type)
            {
                case VulnerabilityType.CrossSiteScripting:
                    return _validator.GetRule(ValidationRules.AntiXssString).IsValid(text);
                case VulnerabilityType.SqlInjection:
                    return _validator.GetRule(ValidationRules.AntiSqlInjectionString).IsValid(text);
                case VulnerabilityType.SsiInjection:
                    return _validator.GetRule(ValidationRules.AntiSsiInjectionString).IsValid(text);
                case VulnerabilityType.PathTraversalInjection:
                    return _validator.GetRule(ValidationRules.AntiPathTraversalInjectionString).IsValid(text);
                default:
                    return false;
            }
        }

        protected void LoadCreditCardRules(IValidator validator)
        {
            validator.AddRule(ValidationRules.AmericanExpress, new AmericanExpressValidationRule());
            validator.AddRule(ValidationRules.Maestro, new MaestroValidationRule());
            validator.AddRule(ValidationRules.MasterCard, new MasterCardValidationRule());
            validator.AddRule(ValidationRules.Visa, new VisaValidationRule());
            validator.AddRule(ValidationRules.VisaElectron, new VisaElectronValidationRule());
        }

        protected void LoadStringRules(IValidator validator)
        {
            validator.AddRule(ValidationRules.AntiXssString, new AntiCrossSiteScriptingValidationRule());
            validator.AddRule(ValidationRules.AntiSqlInjectionString, new AntiSqlInjectionValidationRule());
            validator.AddRule(ValidationRules.AntiSsiInjectionString, new AntiSSIValidationRule());
            validator.AddRule(ValidationRules.AntiPathTraversalInjectionString, new AntiPathTraversalStringValidationRule());
        }
    }

Enumerator ValidationRules:
  public enum ValidationRules
    {
        Visa,
        VisaElectron,
        AmericanExpress,
        Maestro,
        MasterCard,

        AntiXssString,
        AntiSqlInjectionString,
        AntiSsiInjectionString,
        AntiPathTraversalInjectionString

    }

Comentarios