Penulis: Taote.com
Sumber: Taote.com
Catatan: Harap sebutkan sumbernya saat mencetak ulang
untuk mencegah injeksi SQL. Biasanya, memodifikasi file satu per satu tidak hanya merepotkan tetapi juga berisiko hilang sistem.
Dengan mengikuti tiga langkah berikut ini, saya yakin program akan lebih aman dan pemeliharaan seluruh website akan menjadi lebih sederhana.
1. Kategori verifikasi data:
parameterCheck.cs
parameter kelas publikPeriksa{
bool statis publik isEmail(string emailString){
return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\w_-]+( \.['\w_-]+)*@['\w_-]+(\.[ '\w_-]+)*\.[a-zA-Z]{2,4 }");
}
bool statis publik isInt(string intString){
return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^( \d{5}-\d{4})|(\d{5})$ ");
}
bool statis publik isUSZip(string zipString){
return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
Di file Web.config Anda, tambahkan tag di bawah <appSettings>: sebagai berikut
<appSettings>
<tambahkan key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>
dengan kunci <saveParameters> dan nilai berikut adalah "OrderId-int32", dll., dengan "-" di depan mewakili nama parameter, seperti: OrderId, dan int32 berikut mewakili data jenis.
3. Global.asax
Tambahkan paragraf berikut ke Global.asax:
protected void Application_BeginRequest(Pengirim objek, EventArgs e){
String[] safeParameters = Sistem.Konfigurasi.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i < safeParameters.Panjang; i++){
String parameterName = safeParameters[i].Split('-')[0];
String parameterType = safeParameters[i].Split('-')[1];
isValidParameter(namaparameter,tipeparameter);
}
}
public void isValidParameter(string parameterName, string parameterType){
string parameterValue = Permintaan.QueryString[parameterName];
if(parameterValue == null) kembali;
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");
}
}
Ketika modifikasi diperlukan di masa mendatang, kita hanya perlu memodifikasi ketiga file di atas, yang akan sangat meningkatkan efisiensi pemeliharaan keseluruhan sistem. Tentu saja, Anda dapat menambahkan parameter variabel dan tipe data lainnya sesuai dengan kebutuhan Anda.