ฉันเชื่อว่าหลายๆ คนคงเคยเจอกับฐานข้อมูลที่ถูกแฮ็ก ที่นี่ฉันจะพูดถึงวิธีจัดการกับมัน
ขั้นตอนที่หนึ่ง: สำรองข้อมูลฐานข้อมูลที่มีอยู่ของคุณ
ขั้นตอนที่สอง:
ดำเนินการไฟล์ ASP ต่อไปนี้เพื่อลบ JS Trojan ในฐานข้อมูล:
หมายเหตุ: ฉันเขียน conn.asp ด้วยตัวเอง
รหัสโปรแกรม
'ใส่เนื้อหา JS Trojan ที่นี่: โปรดอย่าลืมเปลี่ยนเป็นเนื้อหา JS Trojan ในฐานข้อมูลของคุณ
<!--#include file="conn.asp"-->
-
Server.ScriptTimeOut=180
ตั้งค่า rstSchema = conn.OpenSchema(20)
เค=1
ทำจนถึง rstSchema.EOF 'สำรวจตารางฐานข้อมูล
ถ้า rstSchema("TABLE_TYPE")="TABLE" จากนั้น
response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" 'แสดงชื่อตาราง
ตั้งค่า rs=Server.CreateObject("ADODB.Recordset")
sql = "เลือก * จาก [" & rstSchema ("TABLE_NAME")&"]"
rs.open sql,conn,1,3
สำหรับ i=0 ถึง rs.fields.count-1 'สำรวจเขตข้อมูลในตาราง
ถ้า int(rs(i).Type)=129 หรือ int(rs(i).Type)=130 หรือ int(rs(i).Type)=200 หรือ int(rs(i).Type)=201 หรือ int (rs(i).Type)=202 หรือ int(rs(i).Type)=203 จากนั้น ' ประมวลผลเฉพาะฟิลด์ที่มีประเภทฟิลด์เป็นประเภทอักขระ
conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'ใส่ที่นี่ JS เนื้อหาโทรจัน','')")
response.write rs(i).name &" "&rs(i).Type &" "'แสดงชื่อฟิลด์ที่ดำเนินการ
สิ้นสุดถ้า
ต่อไป
ตอบกลับเขียน "<br>"
สิ้นสุดถ้า
rstSchema.MoveNext
เค=เค+1
วนซ้ำ
ตอบกลับ เขียนว่า "ดำเนินการสำเร็จ"
-
หากมีตารางฐานข้อมูลจำนวนมาก การข้ามผ่านโครงสร้างฐานข้อมูลข้างต้นจะหยุดโดย IIS ก่อนที่จะเสร็จสมบูรณ์ ในเวลานี้คุณสามารถ
รหัสโปรแกรม
ถ้า rstSchema("TABLE_TYPE")="TABLE" จากนั้น
เพิ่มช่วงของค่า k อย่างเหมาะสม เช่น:
รหัสโปรแกรม
ถ้า rstSchema("TABLE_TYPE")="TABLE" k>10 และ k<20 แล้ว
ในกรณีนี้ จะดำเนินการครั้งละ 9 โต๊ะเท่านั้น
ขั้นตอนที่สาม:
ตามลักษณะของการฉีดฐานข้อมูล JS (ซึ่งจะรวมถึงอักขระเช่น <script, </script> และ http://)
ใส่รหัสต่อไปนี้ใน conn.asp:
รหัสโปรแกรม
ฟังก์ชัน Cheack_Sqljs()'ป้องกันการแทรก JS จากลิงก์ภายนอกในฐานข้อมูล: จริง บ่งชี้ว่าค้นพบการแทรก JS จากลิงก์ภายนอก
ติ่ม F_Post, F_Get
Cheack_Sqljs=เท็จ
ถ้า Request.Form<>"" จากนั้น ' ตรวจพบเมื่อมีการส่งแบบฟอร์ม
สำหรับแต่ละ F_Post ในแบบฟอร์มคำขอ
ถ้า (Instr(LCase(Request.Form(F_Post)),"<script")<>0 หรือ Instr(LCase(Request.Form(F_Post)),"</script>")<>0) และ Instr(LCase (Request.Form(F_Post))," http://"<>0 จากนั้น
Check_Sqljs=จริง
ออกเพื่อ
สิ้นสุดถ้า
ต่อไป
สิ้นสุดถ้า
ถ้า Request.QueryString<>"" จากนั้น 'ตรวจสอบ QueryString เมื่อส่ง
สำหรับแต่ละ F_Get ใน Request.QueryString
ถ้า (Instr(LCase(Request.Form(F_Get)),"<script")<>0 หรือ Instr(LCase(Request.Form(F_Get)),"</script>")<>0) และ Instr(LCase (Request.Form(F_Get))," http://"<>0 จากนั้น
Check_Sqljs=จริง
ออกเพื่อ
สิ้นสุดถ้า
ต่อไป
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น CheckDataFrom()'ตรวจสอบแหล่งที่มาของข้อมูลที่ส่ง: True หมายถึงข้อมูลที่ถูกส่งจากภายนอกไซต์
ตรวจสอบ DataFrom=True
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
ถ้ากลาง (server_v1,8,len(server_v2))<>server_v2 แล้ว
ตรวจสอบ DataFrom=False
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
ถ้า Cheack_Sqljs หรือ CheckDataFrom จากนั้น
Response.Write "<Script Language=JavaScript>alert('Execution ห้าม การดำเนินการที่ผิดกฎหมาย');</Script>"
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า