เป็นเรื่องง่ายที่จะพัฒนาเว็บไซต์ ASP กับ Dreamweaver ดังนั้นจึงไม่มีความแตกต่างระหว่างสามเณรและทหารผ่านศึก? ความแตกต่างในนั้นมีขนาดใหญ่ แต่ก็ยากที่คนธรรมดาจะได้เห็นอย่างรวดเร็ว มิตรภาพประสิทธิภาพการดำเนินงานและความปลอดภัยของเว็บไซต์ของอินเทอร์เฟซเป็นจุดสมาธิสามจุดที่แตกต่างจากมือใหม่และทหารผ่านศึก
ในแง่ของความปลอดภัยปัญหาที่ง่ายที่สุดของสามเณรคือปัญหาของช่องโหว่ SQL ฉีด ใช้ NBSI 2.0 เพื่อสแกนเว็บไซต์ ASP บางแห่งบนอินเทอร์เน็ตและคุณสามารถค้นหาเว็บไซต์ ASP จำนวนมากที่มีช่องโหว่การฉีด SQL
การฉีด SQL ที่เรียกว่า SO -called (SQL Injection) คือการใช้ช่องโหว่ของข้อมูลอินพุตของโปรแกรมเมอร์กับข้อมูลอินพุตของผู้ใช้ซึ่งใช้ช่องโหว่เช่นการตรวจจับที่ไม่เพียงพอหรือไม่ตรวจจับ
จะเห็นได้ว่าเหตุผลหลักสำหรับการฉีด SQL ของการโจมตีไม่ได้ตรวจสอบข้อมูลที่ผู้ใช้ป้อน
คำขอ HTTP ทั่วไปไม่มีอะไรมากไปกว่า Get and Post ดังนั้นตราบใดที่เรากรองข้อมูลพารามิเตอร์ทั้งหมดของโพสต์ทั้งหมดหรือรับคำขอในโปรแกรมเราสามารถป้องกันการโจมตีการฉีด SQL
น่าเสียดายที่ DW ไม่ได้ให้รหัสที่เกี่ยวข้องดังนั้นหากคุณต้องการป้องกันการโจมตีประเภทการฉีด SQL คุณต้องแก้ไข
เพียงบันทึกโปรแกรมต่อไปนี้เป็น sqlinject.asp จากนั้นโทรไปที่ส่วนหัวของหน้าเว็บที่ต้องฉีด
<!-#รวมไฟล์ = sqlinject.asp->
คุณสามารถทำการฉีดยาป้องกันหน้า
หากคุณต้องการอ้างถึงสถานีทั้งหมดให้เพิ่มการโทรหัวหรือเพิ่มรหัสโปรแกรมต่อไปนี้โดยตรงในไฟล์การเชื่อมต่อฐานข้อมูลที่สร้างขึ้นโดยการเชื่อมต่อที่สร้างโดย DW ไฟล์การเชื่อมต่อฐานข้อมูล
รหัสโปรแกรมทั่วไป (อ้างอิงจากอินเทอร์เน็ตเพื่อทำการเปลี่ยนแปลงที่เหมาะสม) ดังนี้:
-
'--------- ชิ้นส่วนคำจำกัดความ ---------------
สลัว sql_injdata
SQL_INJDATA = '
การอัพเดท |
|
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 <ภาษาสคริปต์ = JavaScript>
การแจ้งเตือน ('ระบบเตือนคุณ!
Response.end
สิ้นสุดถ้า
ต่อไป
ต่อไป
สิ้นสุดถ้า
'-------- รับชิ้นส่วน -----------------
ถ้า request.form <> จากนั้น
สำหรับแต่ละ sql_post ใน request.form
สำหรับ sql_data = 0 ถึง ubound (sql_inj)
ถ้า instr (request.form (sql_post), sql_inj (sql_data))> 0 จากนั้น
Response.write <ภาษาสคริปต์ = JavaScript>
การแจ้งเตือน ('ระบบเตือนคุณ!
Response.end
สิ้นสุดถ้า
ต่อไป
ต่อไป
สิ้นสุดถ้า
-
ผ่านโปรแกรมข้างต้นตัวอักษร SQL ที่เป็นอันตรายที่ส่งมาจากวิธี GET หรือวิธีการโพสต์สามารถทำได้และผู้บุกรุกจะถูกเตือนให้หันไปหา index.htm (หน้าแรก)