Autor: Taote.com
Quelle: Taote.com
Hinweis: Bitte geben Sie beim Nachdruck die Quelle an,
um eine SQL-Injection zu verhindern. Normalerweise ist das Ändern einer Datei nach der anderen mühsam, es besteht auch die Gefahr, dass die gesamte Datei verloren geht System.
Durch die Befolgung der folgenden drei Schritte glaube ich, dass das Programm sicherer wird und die Wartung der gesamten Website einfacher wird.
1. Kategorie der Datenüberprüfung:
parameterCheck.cs
öffentliche Klasse parameterCheck{
öffentlicher statischer Bool isEmail(string emailString){
return 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})$ ");
}
öffentlicher statischer Bool isUSZip(string zipString){
return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
Fügen Sie in Ihrer Web.config-Datei unter <appSettings> ein Tag hinzu: wie folgt:
<appSettings>
<add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>
wobei der Schlüssel <saveParameters> ist und der folgende Wert „OrderId-int32“ usw. ist, wobei „-“ vorne den Namen des Parameters darstellt, z. B. OrderId, und der folgende int32 die Daten darstellt Typ.
3. Global.asax
Fügen Sie den folgenden Absatz zu Global.asax hinzu:
protected void Application_BeginRequest(Object sender, EventArgs e){
String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i < safeParameters.Length; i++){
String parameterName = safeParameters[i].Split('-')[0];
String parameterType = safeParameters[i].Split('-')[1];
isValidParameter(parameterName, parameterType);
}
}
public void isValidParameter(string parameterName, string parameterType){
string parameterValue = Request.QueryString[parameterName];
if(parameterValue == null) return;
if(parameterType.Equals("int32")){
if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
}
else if (parameterType.Equals("double")){
if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
}
else if (parameterType.Equals("USzip")){
if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
}
else if (parameterType.Equals("email")){
if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
}
}
Wenn in Zukunft Änderungen erforderlich sind, müssen wir nur die oben genannten drei Dateien ändern, was die Effizienz der Wartung des gesamten Systems erheblich verbessert. Natürlich können Sie entsprechend Ihren eigenen Anforderungen weitere variable Parameter und Datentypen hinzufügen.