Heim  >  Artikel  >  Backend-Entwicklung  >  Erkennen von SQL-Injection-Angriffscode unter asp.net

Erkennen von SQL-Injection-Angriffscode unter asp.net

巴扎黑
巴扎黑Original
2016-12-20 17:09:581258Durchsuche

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)



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn