Autor: Taote.com
Fonte: Taote.com
Nota: Por favor, indique a fonte ao reimprimir
para evitar a injeção de SQL. Normalmente, modificar os arquivos um por um não é apenas problemático, mas também corre o risco de faltar. sistema.
Seguindo os três passos a seguir, acredito que o programa ficará mais seguro e a manutenção de todo o site ficará mais simples.
1. Categoria de verificação de dados:
parâmetroCheck.cs
parâmetro de classe públicaCheck{
public static bool isEmail(string emailString){
retornar System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\w_-]+( \.['\w_-]+)*@['\w_-]+(\.[ '\w_-]+)*\.[a-zA-Z]{2,4 }");
}
public static bool isInt(string intString){
return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^( \d{5}-\d{4})|(\d{5})$ ");
}
public static bool isUSZip(string zipString){
return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
Em seu arquivo Web.config, adicione uma tag em <appSettings>: como segue
<appSettings>
<add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>
onde a chave é <saveParameters> e o valor a seguir é "OrderId-int32", etc., onde "-" na frente representa o nome do parâmetro, como: OrderId, e o seguinte int32 representa os dados tipo.
3. Global.asax
Adicione o seguinte parágrafo a Global.asax:
protegido void Application_BeginRequest(Remetente do objeto, EventArgs e){
String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i < safeParameters.Length; i++){
String parâmetroNome = safeParameters[i].Split('-')[0];
String parâmetroType = safeParameters[i].Split('-')[1];
isValidParameter(parâmetroNome, parâmetroTipo);
}
}
public void isValidParameter(string parâmetroNome, string parâmetroTipo){
string parâmetroValue = Request.QueryString[parâmetroNome];
if(parameterValue == null) return
if(parameterType.Equals("int32")){
if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
}
senão if (parameterType.Equals("duplo")){
if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
}
senão if (parameterType.Equals("USzip")){
if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
}
senão if (parameterType.Equals("email")){
if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
}
}
Quando forem necessárias modificações no futuro, só precisaremos modificar os três arquivos acima, o que melhorará muito a eficiência da manutenção de todo o sistema. Claro, você pode adicionar outros parâmetros variáveis e tipos de dados de acordo com suas próprias necessidades.