ผู้ที่เรียกตัวเองว่าแฮ็กเกอร์ในระดับนั้นเล่น SQL Inject และพบว่าการบุกรุกของแฮ็กเกอร์ส่วนใหญ่อิงจาก SQL Inject เริ่มพูดว่าจะเกิดอะไรขึ้นถ้าเขียนโปรแกรมต่อต้านการฉีด SQL ทั่วไป คำขอ http ทั่วไปนั้นไม่มีอะไรมากไปกว่าการรับและโพสต์ ดังนั้นตราบใดที่เรากรองอักขระที่ผิดกฎหมายทั้งหมดในโพสต์หรือข้อมูลพารามิเตอร์ในคำขอรับในไฟล์ เราก็สามารถทำได้ ตัดสินโดยการใช้การกรองข้อมูลคำขอ http อาจถูกโจมตีด้วยการฉีด SQL หรือไม่
คำร้องขอรับที่ส่งผ่านโดย IIS ไปยัง asp.dll จะอยู่ในรูปแบบของสตริง เมื่อข้อมูลถูกส่งไปที่ Request.QueryString ตัวแยกวิเคราะห์ asp จะวิเคราะห์ข้อมูลของ Request.QueryString แล้วแยกเนื้อหาของแต่ละอาร์เรย์ตาม "&" ข้อมูลถูกดักจับดังนี้:
ขั้นแรก เรากำหนดว่าไม่สามารถรวมอักขระต่อไปนี้ในคำขอ:
|และ|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
อักขระแต่ละตัวจะถูกคั่นด้วย "|" จากนั้นเราจะกำหนด Request.QueryString ที่ได้รับ รหัสเฉพาะมีดังนี้:
dim sql_injdata
SQL_injdata = "'|และ|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = แยก(SQL_Injdata,"|")
ถ้า Request.QueryString<><"" จากนั้น
สำหรับแต่ละ SQL_Get ใน Request.QueryString
สำหรับ SQL_Data=0 ถึง Ubound(SQL_inj)
ถ้า instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 จากนั้น
Response.Write "<Script Language=****>alert('World Movie Alliance SQL Universal Anti-injection System Prompt ↓nn โปรดอย่าใส่อักขระที่ผิดกฎหมายในพารามิเตอร์แล้วลองฉีด!'); history.back(- 1)</ สคริปต์><"
การตอบกลับสิ้นสุด
สิ้นสุดถ้า
ต่อไป
ต่อไป
สิ้นสุดถ้า
ด้วยวิธีนี้ เราได้ดำเนินการสกัดกั้นการร้องขอ get แต่เรายังจำเป็นต้องกรองคำขอโพสต์ ดังนั้นเราจึงต้องพิจารณา request.form ต่อไป ซึ่งมีอยู่ในรูปแบบของอาร์เรย์ เราเพียงแต่ต้องสร้างอีกรายการหนึ่งเท่านั้น การตัดสินแบบวนรอบ รหัสจะเป็นดังนี้:
ถ้า Request.Form<><"" จากนั้น
สำหรับแต่ละ Sql_Post ใน Request.Form
สำหรับ SQL_Data=0 ถึง Ubound(SQL_inj)
ถ้า instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 จากนั้น
Response.Write "<Script Language=****>alert('World Movie Alliance SQL Universal Anti-injection System Prompt ↓nn โปรดอย่าใส่อักขระที่ผิดกฎหมายในพารามิเตอร์แล้วลองฉีด! nnHTTP: //www.521movie. com '); history.back(-1)</สคริปต์>"
การตอบกลับสิ้นสุด
สิ้นสุดถ้า
ต่อไป
ต่อไป
สิ้นสุดถ้า
โอเค คุณทำเสร็จแล้ว เราได้ใช้การสกัดกั้นข้อมูลเพื่อรับและโพสต์คำขอ คุณจะต้องอ้างอิงหน้านี้ก่อนที่จะเปิดไฟล์ฐานข้อมูล เช่น conn.asp คุณสามารถพัฒนาโปรแกรมของคุณต่อไปได้โดยไม่ต้องกังวลว่าคุณจะถูกโจมตีโดย SQL injector อีกครั้งหรือไม่ ไม่ใช่เหรอ?