ホームページ  >  記事  >  バックエンド開発  >  asp.net での SQL インジェクション攻撃コードの検出

asp.net での SQL インジェクション攻撃コードの検出

巴扎黑
巴扎黑オリジナル
2016-12-20 17:09:581309ブラウズ

2 つのクラス:
(ページ データ検証クラス) PageValidate.cs は基本的にユニバーサルです。
コードは次のとおりです:


System.Text を使用;
System.Web.UI.WebControls を使用;
よく使用される名前空間
///
/// ページデータ検証クラス
///
public class PageValidate
{
プライベート静的正規表現 RegNumber = 新しい正規表現 ("^[0-9] + $");
プライベート静的正規表現 RegNumberSign = 新しい正規表現("^[+ -][0-9]+$?");
プライベート静的正規表現 RegDecimal = new regex("[]?^[0-9]+[0- 9] + $");
プライベート静的正規表現 RegDecimalSign = new 正規表現("^ [+ - ] [0-9] + [0-9] + $?[]?"); //など ^ [+ - ] D + D + $? []
プライベート静的正規表現 RegEmail = new regex("^[\W-]+@\W-]+\(COM|NETWORK|ORGANIZATION|EDU|CRYPTO|TV|BIZ|INFO)$" );  ̄ ̄英語の文字または数字の文字列。[A-ZA-Z0-9] と同じ構文
プライベート静的正規表現 RegCHZN = 新しい正規表現 ("[u4e00- u9fa5]");
Public PageValidate()
{
}

#リージョン数値文字列チェック
///
///アプリケーションクエリ文字列のキー値、数値かどうか、最大長制限をチェック
///
///Request
///リクエストキー値
///最大長
///リクエストクエリ文字列を返す
public 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 (empty = retVal!)
{
retVal = SQLTEXT(retVal) , MAXLEN);
if (ISNUMBER(retVal)!)
retVal = String.Empty;
}
if (retVal == NULL)
Return retVal; ///数値文字列ですか
///
///入力文字列
///
Public Static Boolean ISNUMBER (String inputData)
{
Match M = RegNumber.Match(inputData);
Return m.Success;
}
///
///数値文字列に正負の符号を付けることができるかどうか
///
///入力文字列
///
Public static boolean IsNumberSign(String inputData)
{
Match M = RegNumberSign.Match(inputData);
Return m.Success;
///
/// 浮動小数点数かどうか
///
/// 入力文字列
///
Public static boolean IsDecimal( String inputData)
{
Match M = RegDecimal.Match(inputData);
Return m.Success
}
///
///署名できる浮動小数点数かどうか
///
// /入力文字列
///
Public static Boolean IsDecimalSign (string inputData)
Match M = RegDecimalSign.Match(inputData)
Return m.Success;
#endregion
#地域の中国語検出
///
///漢字があるかどうかを検出します
///
///
///
Public static Boolean IsHasCHZN (String inputData)
{
Match M = RegCHZN.Match(inputData)
Return m.Success; }
#endregion
# 地域のメールアドレス
///
///正の値を指定できる浮動小数点数かどうか 負の符号
///
///入力文字列
///
Public static boolean ISEMAIL( String inputData)
{
Match M = RegEmail.Match(inputData);
Return m.Success
}
#endregion
# その他の地域
///
///文字列の最大長を確認して文字列を返す指定された長さの文字列
///
///入力文字列
///最大長
///
パブリック静的文字 String SQLTEXT (String SQLInput, int max length)
{
if (SQLInput = NULL && SQLInput = String 。空の)!
{
SQLInput = sqlInput.Trim();
If (sqlInput.Length>最大長) //最大長に従って文字列を切り詰めます
SQLInput = sqlInput.Substring(0, 最大長)
返された SQLInput ;
}
///
///文字列エンコーディング
///
///
///
パブリック静的文字列 HTMLEncode(String inputData)
{
Return HttpUtility.HtmlEncode(inputData); /
///エンコードされた文字列を表示するラベルを設定します
///
///
///
Public static void SetLabel(LBL, String txtInput)
{
lbl.Text = HTMLEncode( txtInput);
Public static void SetLabel(LBL label, object inputObj)
{
SetLabel(LBL, inputObj.ToString())
}
//文字列のクリーニング
;public static string inputText(String inputString, int max length)
{
StringBuilder retVal = new StringBuilder();
// null かどうかをチェック
if ((inputString = NULL) && (inputString = String.Empty)! )
{
inputString = inputString.Trim();
//長さを確認する
If (inputString.Length>最大長)
inputString = inputString.Substring(0, 最大長)
//置換文字の危険性
for(int) i = 0;i{
switch(inputString[I])
{
case '":
retVal.Append(""")
break ; retVal.Append("<");
break;
retVal.Append(">");
default:
retVal.Append (inputString[I]); ;
}
}
retVal.Replace("'", ""); //一重引用符を置換します
}
Return retVal.ToString();
///
/ //HTML コードに変換します
// /
///String
///String
パブリック静的文字列エンコーディング (String str)
{
str = str.Replace("&", "&");
str = str.Replace("'", " '");
str = str.Replace(""", """);
str = str.Replace("", "");
str = str .Replace("<", "<" );
str = str.Replace(">", ">");
戻ります
///
/// HTML を通常のテキストに解析します
///
///String
///String
public static string decode(String str)
{
strait = str .Replace("
", "n"); .Replace(">", ">");
str = str.Replace("",""); .Replace(""",""");
return str; Global.asax ファイル名を保存し、Web サイトのルート トロイの木馬の下に置きます。 (その他の機能は自分で追加できます)



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。