كيفية اختبار برمجياً من مشكلات التوافق الخاصة ب ASP.NET

مقدمة

توضح هذه المقالة كيفية إضافة ضمانات لتطبيق ASP.NET للمساعدة في الحماية ضد مشكلات التوافق الشائعة.

مزيد من المعلومات

ما هو التوافق؟

التوافق هي العملية التي تحدد كيف مختلف أشكال مكافئة اسماً يتم تحليله إلى اسم معيار واحد. تعرف أيضا باسم معيار واحد هو الاسم المتعارف عليه. على سبيل المثال، على كمبيوتر معين، أسماء c:\dir\test.dat، test.dat، و... \.. قد تشير كافة \test.dat إلى نفس الملف. التوافق هي عملية يقوم بتعيين هذه الأسماء إلى اسم مشابه ل c:\dir\test.dat.

عند تلقي URL من قبل ملقم ويب، تعيين الملقم الطلب إلى مسار نظام ملفات الذي يحدد الاستجابة. يجب أن يحلل إجراء التحويل التي تستخدم في تعيين الطلب بشكل صحيح URL لتجنب تخدم أو معالجة المحتوى غير متوقع. لمزيد من المعلومات حول التوافق، قم بزيارة موقع Microsoft التالي على الويب:نوصي باستخدام أفضل الممارسات للمساعدة في الحفاظ على التطبيقات الخاصة بك. لمزيد من المعلومات، راجع المقطع التالي.

إضافة إجراءات وقائية عملية إضافية لتطبيق الويب الخاص بك

إضافة مطوري Microsoft ASP.NET شيكات أخرى للمساعدة في تقليل مشكلات التوافق الخاصة بتطبيق ويب عن طريق إضافة معالج حدث Application_BeginRequest في ملف Global.asax الخاصة بها التي تم تخزينها في الدليل الجذر لتطبيق ويب. تنفيذ معالج الحدث هذا لكل طلب ويب. يمكنك إضافة التعليمات البرمجية إلى معالج الحدث هذا للمساعدة على الحماية ضد مشكلات التوافق.

نموذج التعليمات البرمجية

نماذج التعليمات البرمجية التالية توضح كيفية إضافة معالج حدث Application_BeginRequest لملف Global.asax. معالج الحدث هذا يمنع الأحرف غير الصالحة ومحددات مواقع المعلومات المشوهة عن طريق إجراء عملية التحقق من المسار. لذلك، يمكنك تجنب مشكلات التوافق الشائعة.

نموذج التعليمات البرمجية Global.asax (Visual Basic.NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)
If (Request.Path.IndexOf(chr(92)) >= 0 OR _
System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
Throw New HttpException(404, "Not Found")
End If
End Sub
</script>

نموذج التعليمات البرمجية Global.asax (C #)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {
if (Request.Path.IndexOf('\\') >= 0 ||
System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
throw new HttpException(404, "not found");
}
}
</script>

إخلاء مسؤولية

يتم توفير المعلومات التي يتم توفيرها في "قاعدة المعارف ل Microsoft" كما هي "دون ضمان من أي نوع. ونحن مسؤوليتها تجاه كافة الضمانات، سواء صريحة أو ضمنية، بما في ذلك ضمانات القابلية للتسويق والملاءمة لغرض معين. في أي حال من شركة Microsoft أو مورديها مسؤولاً عن أية أضرار مهما كانت بما في ذلك مباشرة، غير المباشرة والعرضية، الأضرار، فقدان أرباح العمل أو أضرار خاصة، حتى لو تم إخطار شركة Microsoft أو مورديها بإمكانية حدوث مثل هذه الأضرار. لا تسمح بعض الولايات باستثناء أو تحديد المسؤولية عن الأضرار العرضية أو اللاحقة. لذلك، قد لا تنطبق التحديد سالف الذكر.
خصائص

رقم الموضوع: 887459 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات