عندما نستخدم ASP للاتصال بقاعدة البيانات لتطوير التطبيقات ، قد نواجه الموقف الذي يتم فيه تعليق قاعدة بيانات ASP مع طروادة سيكون مفيدًا لك.
في هذه المقالة ، نقدم بالتفصيل طريقة البرمجة للحل التفصيلي من طروادة معلقة من قاعدة بيانات ASP.
الخطوة الأولى:
قم بعمل نسخ احتياطية لقواعد البيانات الموجودة.
الخطوة 2:
قم بتنفيذ ملف ASP التالي ، بحيث يمكن إزالة أحصنة طروادة JS في قاعدة البيانات:
ملاحظة: لقد كتبت ذلك بنفسي.
ضع محتوى JS Trojan هنا: يرجى تذكر تغييره إلى محتوى JS Trojan في قاعدة البيانات الخاصة بك.
- <!-#includefile = conn.asp->
- <٪
- server.scriptTimeout = 180SetRstSchema = conn.openschema (20)
- ك = 1
- dountilrstschema.eof 'اجتياز جداول قاعدة البيانات
- ifrstschema (table_type) = tableThen
- Response.writek &. <fontcolor = red> <b> & rstschema (table_name) & </b> </font>: 'show setrs setrs = server.createBject (adodb.recordset)
- SQL = SELECT*FROM [& RSTSCHEMA (TABLE_NAME) &]
- Rs.Opensql ، conn ، 1،3fori = 0tors.fields.count-1'transfer حقل Ifint (rs (i) .type) = 129
- orint (rs (i) .type) = 130orint (rs (i) .type) = 200orint (rs (i) .type) = 201Orint (rs (i) .type) = 202orint (rs (i) .type) = 203 في الحقول المعالجة فقط مع نوع حرف نوع الحقل
- conn.execute (تحديث [& rstschema (table_name) &] set & rs (i) .Name & = replire (& rs (i) .Name &
- Asvarchar (8000)) ، "وضع محتوى Trojan هنا" ، '')) reponse.writers (i) .Name && rs (i) .type & 'يعرض اسم الحقل الذي تم تنفيذه.
- Endif
- التالي
- الرد. write <br>
- Endif
- RSTSCHEMA.Movenext
- KK = K+1
- حلقة
- استجابة. تنفيذ التنفيذ بنجاح
- ٪>
إذا كان هناك العديد من جداول قاعدة البيانات ، فسيتم إيقاف بنية قاعدة بيانات اجتياز أعلاه بواسطة IIS قبل تنفيذها. في هذا الوقت يمكنك:
إذا كان rstschema (table_type) = جدول ثم
تمت إضافة نطاق قيم K بشكل مناسب ، مثل:
إذا كان rstschema (table_type) = الجدول K> 10 و K <20 ثم
وبهذه الطريقة ، يتم تشغيل 9 طاولات فقط في وقت واحد.
الخطوة 3:
وفقًا لخصائص حقن قاعدة البيانات JS (والتي ستشمل أحرفًا مثل http: //) ، ضع الكود التالي في conn.asp:
- FunctionCheAck_sqljs () 'يمنع قاعدة البيانات الخارجي JS حقن: TRUE هو اكتشاف حقن الرابط الخارجي JS.
- dimf_post ، f_get
- check_sqljs = false
- ifrequest.form <> ثم "اكتشاف foreachf_postinRequest.formif (instr (lase (request.form (f_post)) ،
- <script) <> 0orinstr (lace (request.form (f_post)) ، </script>) <> 0)
- ANDINST (LCASE (request.form (f_post)) ، http: //) <> 0then
- check_sqljs = صحيح
- الخروج
- Endif
- التالي
- Endif
- ifrequest.querystring <> then'squerystring اكتشاف على التقديم foreachf_getinrequest.querystring
- if (instr (request.form (f_get)) ، <script) <> 0orinstr (lace (request.form (f_get)) ، </script>) <> 0)
- ANDINST (LCASE (request.form (f_get)) ، http: //) <> 0then
- check_sqljs = صحيح
- الخروج
- Endif
- التالي
- Endif
- الوظيفية
- functionCheckDatafrom () "تحقق من البيانات المقدمة: يتم إرسال TRUE للبيانات من خارج الموقع
- checkDatafrom = صحيح
- server_v1 = cstr (request.servervariables (http_referer)) server_v2 = cstr (request.servervariables (server_name))
- IFMID (server_v1،8 ، len (server_v2)) <> server_v2then
- checkDatafrom = false
- Endif
- الوظيفية
- ifcheack_sqljsorcheckdatafromthen
- استجابة. write <scriptLanguage = javaScript> Alert ('التنفيذ محظور ، تشغيل غير قانوني.') ؛ </script> استجابة.
- Endif
هذا كله عن طريقة البرمجة عندما يتم تعليق قاعدة بيانات ASP مع طروادة.