أعتقد أن العديد من الأشخاص قد واجهوا اختراق قاعدة البيانات. وهنا سأتحدث عن كيفية التعامل معها.
الخطوة الأولى: عمل نسخة احتياطية لقاعدة البيانات الموجودة لديك.
الخطوة الثانية:
قم بتنفيذ ملف ASP التالي لإزالة حصان طروادة JS في قاعدة البيانات:
ملحوظة: لقد كتبت 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="select * from [" & rstSchema("TABLE_NAME")&"]"
rs.open SQL، كون، 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 In 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()'التحقق من مصدر البيانات المقدمة: صحيح يعني أن البيانات مقدمة من خارج الموقع
CheckDataFrom=صحيح
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
إذا كان mid(server_v1,8,len(server_v2))<>server_v2 إذن
CheckDataFrom=False
نهاية إذا
وظيفة النهاية
إذا كان Check_Sqljs أو CheckDataFrom ثم
Response.Write "<Script Language=JavaScript>alert('التنفيذ محظور، عملية غير قانونية.');</Script>"
الاستجابة.النهاية ()
نهاية إذا