Autor: Taote.com
Fuente: Taote.com
Nota: indique la fuente al reimprimir
para evitar la inyección de SQL. Por lo general, modificar archivos uno por uno no solo es problemático sino que también corre el riesgo de perderlos. sistema.
Siguiendo los siguientes tres pasos, creo que el programa será más seguro y el mantenimiento de todo el sitio web será más sencillo.
1. Categoría de verificación de datos:
parámetroCheck.cs
parámetro de clase públicaVerificar{
bool estático público isEmail (cadena cadena de correo electrónico) {
return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\w_-]+( \.['\w_-]+)*@['\w_-]+(\.[ '\w_-]+)*\.[a-zA-Z]{2,4 }");
}
bool estático público isInt (cadena intString) {
return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^( \d{5}-\d{4})|(\d{5})$ ");
}
bool estático público esUSZip (cadena zipString) {
return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
En su archivo Web.config, agregue una etiqueta en <appSettings>: como sigue
<appSettings>
<add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>
donde la clave es <saveParameters> y el siguiente valor es "OrderId-int32", etc., donde "-" al frente representa el nombre del parámetro, como: OrderId, y el siguiente int32 representa los datos tipo.
3. Global.asax
Agregue el siguiente párrafo a Global.asax:
void protegido Application_BeginRequest (remitente del objeto, EventArgs e) {
String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i <safeParameters.Length; i++){
Nombre del parámetro de cadena = parámetrosseguros[i].Split('-')[0];
Tipo de parámetro de cadena = safeParameters[i].Split('-')[1];
isValidParameter(nombredeparámetro, tipo de parámetro);
}
}
public void isValidParameter(nombre del parámetro de cadena, tipo de parámetro de cadena){
cadena valor de parámetro = Request.QueryString [nombre de parámetro];
if(parameterValue == null) retorno
si(parameterType.Equals("int32")){
if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
}
de lo contrario si (parameterType.Equals("doble")){
if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
}
de lo contrario si (parameterType.Equals("USzip")){
if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
}
else if (parameterType.Equals("correo electrónico")){
if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
}
}
Cuando sea necesario realizar modificaciones en el futuro, solo necesitamos modificar los tres archivos anteriores, lo que mejorará en gran medida la eficiencia del mantenimiento de todo el sistema. Por supuesto, puede agregar otros parámetros variables y tipos de datos según sus propias necesidades.