Heim > Artikel > Backend-Entwicklung > Erkennen von SQL-Injection-Angriffscode unter asp.net
Zwei Klassen:
(Seitendatenüberprüfungsklasse) PageValidate.cs ist grundsätzlich universell.
Der Code lautet wie folgt:
System.Text verwenden;
System.Web.WebControls verwenden;
Häufig verwendete Namespaces
{
///
///Seitendatenvalidierungsklasse
///
öffentliche Klasse PageValidate
{
Privater statischer regulärer Ausdruck RegNumber = neuer regulärer Ausdruck expression("^[0-9]+$");
Privater statischer regulärer Ausdruck RegNumberSign = neuer regulärer Ausdruck("^[+-][0-9]+$?" ); Ausdruck RegDecimal = neuer regulärer Ausdruck ("[]?^[0-9] + [0-9] + $");
privater statischer regulärer Ausdruck RegDecimalSign = neuer regulärer Ausdruck von ("^ [+ - ] [0 -9] + [0-9] + $?[]?"); // Entspricht ^ [+ - ] D + D + $? []
private static regex RegEmail = new regex("^[\W-]+@\W-]+\(COM|NETWORK|ORGANIZATION|EDU|CRYPTO|TV|BIZ|INFO) $"); /W¯¯Eine Zeichenfolge aus englischen Buchstaben oder Zahlen, dieselbe Syntax wie [A-ZA-Z0-9]
Privater statischer regulärer Ausdruck RegCHZN = neuer regulärer Ausdruck ("[ u4e00- u9fa5 ]"); Public PageValidate()
{
}
# Prüfung der numerischen Zeichenfolge der Region
///
///Überprüfen Sie den Schlüssel des Anwendungsabfragezeichenfolgenwerts, ob es sich um eine Zahl handelt , maximale Längenbegrenzung
///
///Anfrage
///Angeforderter Schlüsselwert
///Maximale Länge
///Anforderungsabfragezeichenzeichenfolge zurückgeben
öffentlich static String FetchInputDigit(req HttpRequest, String inputKey, maxlen int)
{
String = retVal String.Empty;
if (inputKey = NULL && inputKey = String.Empty! )
{
retVal = req.QueryString [inputKey]
if (null == retVal)
retVal = req.Form [inputKey]
if (null = retVal!)
{
retVal = SQLTEXT( retVal, MAXLEN);
if (ISNUMBER(retVal)!)
retVal = String.Empty;}
}
if (retVal == NULL)
retVal = String. Empty;
return retVal;
///
///whether Number string
///
///Input string
///
public static boolean ISNUMBER(String inputData)
{
Match M = RegNumber.Match( inputData);
return m.Success;}
///
///Ob Die numerische Zeichenfolge kann signiert werden
///
///Eingabezeichen Zeichenfolge
///
Öffentlicher statischer boolescher Wert IsNumberSign(String inputData)
{
Match M = RegNumberSign. Match(inputData);
Return m.Success;
///
///Ist es eine Gleitkommazahl?
Return m.Success;
}
///
///Ob es sich um eine Gleitkommazahl mit positivem oder negativem Vorzeichen handelt
///
///Eingabe string
///
Public static Boolean IsDecimalSign(String inputData)
{
Match M = RegDecimalSign.Match(inputData);
Return m.Success; #endregion
#Regionale chinesische Erkennung
///
///Erkennen, ob chinesische Schriftzeichen vorhanden sind
///
///
///
Öffentliche Statik boolean IsHasCHZN(String inputData)
{
Match M = RegCHZN.Match(inputData);
Return m.Success;
}
#endregion
#Regionale E-Mail-Adresse
///
///Ob es sich um eine Gleitkommazahl mit positivem oder negativem Vorzeichen handelt
///
///Eingabezeichenfolge
// /
Public static boolean ISEMAIL( String inputData)
{
Match M = RegEmail.Match(inputData);
Return m.Success;}
#endregion
#Andere Regionen
///
///Überprüfen Sie die maximale Länge der Zeichenfolge und geben Sie eine Zeichenfolge mit der angegebenen Länge zurück
///
///Eingabezeichenfolge
///Maximale Länge
///
Öffentlicher statischer String SQLTEXT(String SQLInput, int max length)
{
IF (SQLInput = NULL && SQLInput = String.Empty)!
{ SQLInput of
= sqlInput.Trim();
If (sqlInput.Length>maximum length) //Die Zeichenfolge entsprechend der maximalen Länge abschneiden
SQLInput = sqlInput.Substring(0, Maximum length);
}
Der zurückgegebene SQLInput;
Öffentliche statische Zeichenfolge HTMLEncode (String inputData)
{
Return HttpUtility.HtmlEncode (inputData);
}
///
///Legen Sie die Bezeichnung fest, um die Codierungszeichenfolge anzuzeigen
///
///
///
public static void SetLabel(label lbl, String txtInput)
{
lbl.Text = HTMLEncode(txtInput) ; >}
Public static void SetLabel(LBL label, object inputObj)
{
SetLabel(LBL, inputObj.ToString());
}
//String-Reinigung
öffentlicher statischer String inputText(String inputString, int max length)
{
StringBuilder retVal = new StringBuilder();
// Überprüfen Sie, ob er leer ist
if ((inputString = NULL) && (inputString = String.Empty)! )
{
inputString = inputString.Trim();
// Länge prüfen
if (inputString.Length> maximale Länge)
inputString = inputString.Substring( 0, maximale Länge);
//Gefährliche Zeichen ersetzen
for (int i = 0;i
switch(inputString[I])
{
case'":
retVal.Append(""");
break; ("<"); Append(">");
Break;
Default:
retVal.Append (inputString[I]);
Break; ("'", ""); //Einfache Anführungszeichen ersetzen
}
Return retVal(}
///
///In HTML-Code konvertieren
///
///String
///String
Öffentliche statische String-Kodierung(String str)
{
str = str.Replace("&", "&") ;
str = str.Replace("'", "'");
str = str.Replace(""", "" ");
str = str.Replace("<", "<" );
str = str.Replace(">", ">");
str = str. Ersetzen("n", "
");
return to str;}
///
///Parse HTML in normalen Text
///
// /String
///String
Öffentliche statische String-Dekodierung ( String str)
{
str = str.Replace("
", "n"); .Replace(">", ">");
str = str.Replace("<", "
str = str.Replace("", "");
str = str.Replace(""", """ ; Geben Sie einfach den Namen unter den Root-Trojaner der Website ein. (Weitere Funktionen können selbst hinzugefügt werden)