著者:Taote.com
出典:Taote.com
注:
SQLインジェクションを防ぐため、転載する際はソースを明示してください。 通常、ファイルを一つ一つ修正するのは面倒なだけでなく、全体からインジェクションを防ぐ方法についてお話します。システム。
以下の3つのステップに従うことで、プログラムはより安全になり、Webサイト全体のメンテナンスが簡単になると思います。
1. データ検証カテゴリ:
パラメータチェック.cs
パブリック クラス パラメータCheck{
public static 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})$ ");
}
public static bool isUSZip(string zipString){
return System.Text. RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
<appSettings>
の下にタグを追加します。
<add key="safeParameters" value="OrderID-int32,CustomerEmail-email, ShippingZipcode-USzip" />
</appSettings>
キーは <saveParameters>、次の値は「OrderId-int32」などです。先頭の「-」は OrderId などのパラメーターの名前を表し、次の int32 はデータを表しますタイプ。
3. Global.asax
次の段落を Global.asax に追加します。
protected void Application_BeginRequest(オブジェクト送信者, EventArgs e){
String[]safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i <safeParameters.Length; i++){
文字列パラメータ名 =safeParameters[i].Split('-')[0];
文字列パラメータタイプ =safeParameters[i].Split('-')[1];
isValidParameter(パラメータ名, パラメータタイプ);
}
public void isValidParameter(string パラメータ名, 文字列パラメータタイプ)
{
文字列パラメータ値 = Request.QueryString[パラメータ名];
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");
}
}
将来変更が必要になった場合は、上記の 3 つのファイルを変更するだけで済みます。これにより、システム全体の保守効率が大幅に向上します。もちろん、必要に応じて他の変数パラメータやデータ型を追加することもできます。