ผู้แต่ง: Taote.com
ที่มา: Taote.com
หมายเหตุ: โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ
เพื่อป้องกันการแทรก SQL โดยปกติแล้ว การแก้ไขไฟล์ทีละไฟล์ไม่เพียงแต่ยุ่งยากเท่านั้น แต่ยังเสี่ยงต่อการสูญหายอีกด้วย ให้ฉันพูดถึงวิธีป้องกันการแทรกจากทั้งหมด ระบบ.
เมื่อปฏิบัติตามสามขั้นตอนต่อไปนี้ ฉันเชื่อว่าโปรแกรมจะปลอดภัยยิ่งขึ้น และการบำรุงรักษาเว็บไซต์ทั้งหมดจะง่ายขึ้น
1. หมวดหมู่การตรวจสอบข้อมูล:
พารามิเตอร์Check.cs
พารามิเตอร์คลาสสาธารณะตรวจสอบ{
บูลคงที่สาธารณะ isEmail (สตริง emailString) {
กลับ System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\w_-]+( \.['\w_-]+)*@['\w_-]+(\.[ '\w_-]+)*\.[a-zA-Z]{2,4 }");
-
บูลคงที่สาธารณะ isInt (สตริง intString) {
กลับ System.Text.RegularExpressions.Regex.IsMatch(intString ,"^( \d{5}-\d{4})|(\d{5})$ ");
-
บูลคงที่สาธารณะ isUSZip (สตริง zipString) {
กลับ System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
-
-
2. Web.config
ในไฟล์ Web.config ของคุณ ให้เพิ่มแท็กภายใต้ <appSettings>: ดังนี้
<appSettings>
<เพิ่มคีย์ = "safeParameters" value = "OrderID-int32, CustomerEmail-email, ShippingZipcode-USzip" />
</appSettings>
โดยที่คีย์คือ <saveParameters> และค่าต่อไปนี้คือ "OrderId-int32" ฯลฯ โดยที่ "-" ด้านหน้าแสดงถึงชื่อของพารามิเตอร์ เช่น OrderId และ int32 ต่อไปนี้แสดงถึงข้อมูล พิมพ์.
3. Global.asax
เพิ่มย่อหน้าต่อไปนี้ใน Global.asax:
ป้องกันโมฆะ Application_BeginRequest (ผู้ส่งวัตถุ EventArgs e) {
String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
สำหรับ (int i= 0;i < safeParameters.Length; i++){
ชื่อพารามิเตอร์สตริง = safeParameters[i].Split('-')[0];
String parameterType = safeParameters[i].Split('-')[1];
isValidParameter(ชื่อพารามิเตอร์, ประเภทพารามิเตอร์);
-
}
โมฆะสาธารณะ isValidParameter (ชื่อพารามิเตอร์สตริง, parameterType สตริง){
สตริง parameterValue = Request.QueryString[parameterName];
if(parameterValue == null) ส่งคืน;
if(parameterType.Equals("int32")){
if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
-
อื่นถ้า (parameterType.Equals("double")){
if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
-
อื่นถ้า (parameterType.Equals("USzip")){
if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
-
อื่นถ้า (parameterType.Equals("อีเมล")){
if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
-
-
เมื่อจำเป็นต้องมีการแก้ไขในอนาคต เราจำเป็นต้องแก้ไขไฟล์สามไฟล์ข้างต้นเท่านั้น ซึ่งจะช่วยปรับปรุงประสิทธิภาพในการดูแลรักษาระบบทั้งหมดได้อย่างมาก แน่นอนว่าคุณสามารถเพิ่มพารามิเตอร์ตัวแปรและประเภทข้อมูลอื่น ๆ ได้ตามความต้องการของคุณเอง