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
}
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
Publicar un comentario