الدليل الكامل لتقوية تطبيق ويب Asp.Net Core وواجهة برمجة التطبيقات

تحية يا خابروفيتي! لقد أعددنا لك ترجمة دليل مفيد قبل بدء الدورة التدريبية "C # ASP.NET Core Developer" .










مع كل صافي الأساسية التحديث، مايكروسوفت يثبت أن صافي الأساسية هي الأقوى، وتنوعا، والإطار الكامل المتاحة لتطوير قوية سطح المكتب ، المحمول ، سحابة، و شبكة الإنترنت التطبيقات. على عكس تطبيقات سطح المكتب أو الهاتف المحمول ، يتم تشغيل تطبيق الويب على عنوان عام ، وهو أحد الأسباب التي تجعل أمان تطبيق الويب ذا أهمية كبيرة. على الرغم من أن Asp.Net Core مصمم مع وضع أفضل الممارسات الأمنية في الاعتبار ، إلا أنه لا تزال هناك بعض الثغرات الأمنية التي يجب علينا الانتباه لها قبل وبعد إصدار Asp.Net Core.التطبيقات.



في هذه المقالة ، سننظر في العديد من الثغرات الأمنية في تطبيقات الويب Asp.Net Core والحلول الممكنة لها. لنبدأ بسرد بعض اعتبارات الأمان المهمة لتطبيق .Net Core الخاص بنا .



  1. اجعل تسجيل دخولك أكثر أمانًا
  2. نقل البيانات الحساسة المشفرة فقط
  3. تذكر مسح ملفات تعريف الارتباط الخاصة بك عند الخروج
  4. استخدم دائمًا SSL
  5. لا تقم بتخزين البيانات الحساسة في قاعدة البيانات الخاصة بك بشكل صريح
  6. مسارات التدقيق والتسجيل مهمة للغاية
  7. لا تعرض أبدًا الأخطاء الفنية الأصلية للمستخدم النهائي
  8. البرمجة النصية عبر الموقع (XSS)
  9. حاول إخفاء إصدار .Net Core الخاص بك
  10. تزوير طلب عبر المواقع (CSRF)
  11. يمكن لـ LINQ الحماية من حقن SQL
  12. أضف الشيكات أثناء إلغاء التسلسل
  13. حافظ دائمًا على الإصدارات المحدثة من أطر العمل والمكتبات الخاصة بك


1. اجعل تسجيل دخولك أكثر أمانًا



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





فيما يلي بعض النصائح لتأمين نقطة دخول التطبيق الخاص بك.



استخدام COMPLEX بالحسابات



استخدام أبدا أسماء مثل المشرف و كلمات السر مثل 12345 ، أو اسمك أو معلومات شخصية. يمكن لأي شخص الاستفادة من هذا الخلل ، وسيتمكن الروبوت من التقاط بيانات الاعتماد هذه في وقت قصير للغاية.



حمايه تسجيل الدخول AGAINST



BRUTFORS القوة الغاشمة هو أكثر نوع شائع من الهجوم، الذي يستخدم خوارزميات مختلفة لقوة الغاشمة اسم المستخدم و كلمة المرور تركيباتمن أجل تخمين بيانات اعتماد تسجيل الدخول. بالإضافة إلى ذلك ، يمكن لعدد كبير من محاولات تسجيل الدخول أن تفرط في تحميل الخادم الخاص بك ، مما قد يؤدي إلى DoS (رفض الخدمة) ووقت تعطل للمستخدمين الحقيقيين لتطبيقك.



هجمات القوة الغاشمة تستغرق وقتا أقل ل تخمين بسيط أسماء المستخدمين و كلمات السر ، ولكنها يمكن أيضا تخمين تركيبات معقدة باستخدام القوة الغاشمة تافهة الهجمات .



إذن كيف تحمي تطبيق Asp.Net الخاص بك من هجمات القوة الغاشمة؟



فيما يلي بعض النصائح لمنع هجمات القوة الغاشمة :



  • استخدم Captcha في صفحة تسجيل الدخول الخاصة بك ، لأن برامج الروبوت لا يمكنها التعامل مع اختبارات CAPTCHA حتى الآن.
  • IP .
  • , admin user, .
  • , (A-Z a-z), (0-9) (!, @,., #, $,%, ^, &, * ..).


كيف يتم تنفيذ التوصيات أعلاه؟



قد تبدو الإرشادات المذكورة أعلاه صعبة التنفيذ لمطوري Asp.Net Core المبتدئين ، ولكن لا تقلق ، فهناك مكتبة HackerSpray ممتازة لمساعدتك على حماية عملك من هجمات القوة الغاشمة . كل ما عليك القيام به هو تكوينه.



استخدم دائمًا .NET CORE IDENTITY تمتلك



Asp.Net Core العديد من المكتبات والأدوات المضمنة لتأمين تطبيقاتك. يحتوي التفويض أيضًا على تطبيق رائع من Microsoft يمنحنا التخصيص الكامل لتسجيل الدخول والتسجيل وفقًا لأفضل ممارسات الأمان.



2. نقل البيانات الحساسة فقط في شكل مشفر



لا ترسل أبدًا معلوماتك الحساسة صراحة ، مثل كلمة المرور أو بيانات اعتماد بطاقة الائتمان ، إلى الخادم للتحقق منها. يمكن للقراصنة سرقة هذه البيانات عن طريق اعتراضها قبل إرسالها إلى الخادم.



استخدم دائمًا خوارزمية تجزئة مثل md5 أو SHA256 لكلمات المرور وخوارزميات التشفير مثل AES أو DES من جانب العميل ، على سبيل المثال باستخدام jQuery .





3. تذكر مسح ملفات تعريف الارتباط عند الخروج



عند تسجيل الدخول إلى تطبيق Asp.Net Core ، نقوم بحفظ بعض البيانات الضرورية في الجلسة للحفاظ على تسجيل دخول المستخدم حتى يقوم بتسجيل الخروج. في بعض التطبيقات ، نقوم بتعيين مهلة الجلسة ، وأحيانًا لا نقوم بذلك ، عندما يقوم المستخدم بتحديد خانة الاختيار للإشارة إلى رغبته في الاستمرار في تسجيل الدخول على صفحة تسجيل الدخول.



في الوقت نفسه ، تتم إضافة ملف تعريف ارتباط AspNetCore.Session إلى المتصفح لتتبع المستخدم الذي قام بتسجيل الدخول .







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



4. استخدم دائمًا SSL



يرمز SSL إلى طبقة المقابس الآمنة . ذلك بتشفير الاتصال بين العميل والخادم مع مفتاح معقدة للغاية.



يمكنك ببساطة إخبار Starup.cs الخاص بتطبيق Asp.Net Core الخاص بك باستخدام سياسة ملفات تعريف الارتباط الآمنة دائمًا.





5. لا تقم بتخزين البيانات الحساسة في قاعدة البيانات الخاصة بك بشكل صريح



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



لذلك ، قم دائمًا بتخزين البيانات الحساسة في قاعدة البيانات الخاصة بك باستخدام التجزئة أو التشفير .





6. مسارات التدقيق والتسجيل مهمة للغاية



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



على سبيل المثال ، ما إذا كان المستخدم يقوم بإنشاء مثيل جديد لمستخدم التطبيق أو يغير أدوار أحد المستخدمين الحاليين ، فيجب أن ينعكس كل إجراء يقوم به في سجلات تطبيق Asp.net Core الخاص بك .







7. عدم كشف الأخطاء الفنية الأصلية للمستخدم النهائي.



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



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







8. البرمجة النصية عبر المواقع (XSS)



في هجمات XSS (البرمجة النصية عبر المواقع) ، يرسل المتسللون نصوصًا ضارة عبر حقول الإدخال لسرقة بيانات اعتماد المستخدم وغيرها من البيانات الحساسة.



لنفترض أن لدينا نموذجًا لإضافة منتج إلى أحد التطبيقات. يضيف المخترق منتجًا جديدًا وفي حقل وصف المنتج ، يقوم ببساطة بإدراج مقتطف شفرة JavaScript . عندما يعرض تطبيقنا هذا المنتج على صفحة المنتج مع وصف ، سيتم أيضًا تشغيل البرنامج النصي الضار للمتسلل ، وسيتلقى البيانات التي يحتاجها.



لقد وجدت الصورة أدناه في مقالة XSS على Cloudflare . سيساعدك هذا على إرسال XSS بسهولة أكبر.







إذن كيف يمكننا حماية تطبيق Asp.Net Core الخاص بنا من هجمات البرمجة النصية عبر المواقع؟



يمكنك تأمين تطبيق الويب الخاص بك باتباع هذه النصائح:



  • استخدم التعبيرات العادية من جانب العميل ومن جانب الخادم ، وقم بتخزين البيانات التي تم التحقق من صحتها فقط في قاعدة البيانات الخاصة بك .
  • يساعد تشفير HTML باستخدام Razor في التعامل مع مثل هذه البرامج النصية.
  • يمكن أيضًا إجراء XXS باستخدام تشفير URL ، لذا تحقق من معلمات URL وقم بتشفيرها باستخدام UrlEncoder .


إليك مقالة رائعة من Microsoft حول حماية تطبيقك من XSS.



9. حاول إخفاء إصدار NET Core الخاص بك



في كل استجابة HTTP من الخادم نتلقاها استجابة لطلبنا المرسل من المتصفح ، هناك دائمًا معلومات حول الإصدار الذي تم تطوير التطبيق عليه. تسهل مثل هذه المعلومات على المهاجم العمل ، مما يوفر له الوقت ويسمح له باستهداف إصدار معين من .Net .



من الضروري إنشاء المزيد من العقبات أمام المتسللين وجعل عملهم أكثر صعوبة من خلال إخفاء المعلومات حول إصدار .Net Framework .



إليك كيفية إخفاء إصدار NET Core :



  • قم بإزالة X-Powered-By من رأس الاستجابة.
  • href="https://www.nuget.org/packages/NWebsec.AspNetCore.Middleware/">NWebsec.AspNetCore.Middleware


تثبيت AddServerHeader = falseلإزالة الخادم: رأس Kestrel.



يمكنك إزالة X-Powered-By باستخدام مقتطف الشفرة البسيط هذا في ملفweb.config



<httpProtocol>
 <customHeaders>
   <remove name="X-Powered-By" />
 </customHeaders>
</httpProtocol>


10. طلب ​​تزوير عبر المواقع (CSRF)



هل تعرف الغرض من السمة [ValidateAntiForgeryToken]في .Net Core Web APIs ؟ ربما لاحظت أيضًا الرمز asp-antiforgery="true"في ملفك cshtml؟



نحتاج أولاً إلى فهم CSRF (تزوير طلب عبر الموقع أو XSRF) ، ثم سنحاول فهم الغرض من العلامة والسمة أعلاه.



لنفترض أنك تستخدم الخدمات المصرفية الإلكترونية من حسابك المصرفي لإرسال الأموال إلى صديقك ، وفجأة حصلت على رابط FaceBook من امرأة ذات صورة رمزية جميلة. عندما تفتح هذا الرابط ، يطلب منك النقر هنا لكسب 1000 دولار... ما عليك سوى النقر فوق ، وبما أنك قمت بتسجيل الدخول ومصرح لك باستخدام الخدمات المصرفية الإلكترونية الخاصة بك ، فإن هذا الرابط الضار يقوم بتشغيل برنامج نصي ويرسل الأموال من حسابك إلى حساب المتسلل.



توضح الصورة أدناه بوضوح CSRF.







كيف يمكنك حماية تطبيقك من CSRF؟



asp-antiforgery="true"ينشئ رمزًا مميزًا لمكافحة التزوير [ValidateAntiForgeryToken]ويتحقق من جانب الخادم إذا كان الرمز المميز صالحًا ويحميك من تزوير الطلبات عبر المواقع .



11. يمكن لـ LINQ الحماية من حقن SQL



يعد حقن SQL أحد الأساليب الأكثر استخدامًا لإلحاق الضرر ببيانات المستخدم لسنوات عديدة.



في هذه الطريقة ، يضع المخترق بعض الأحرف الشرطية أو الخاصة في حقل الإدخال ، مما يتسبب في تغيير الطلب بالكامل.



إليك مثال جيد لما هو حقن SQL .





كيف تحمي تطبيق Asp.Net Core الخاص بك من حقن SQL؟



هنا بعض النصائح:



  • استخدام Entity Framework Core
  • استخدم دائمًا الاستعلامات ذات المعلمات.
  • تحقق دائمًا من إدخال جانب الخادم.
  • استخدم الإجراءات المخزنة.


12. إضافة الشيكات أثناء إلغاء التسلسل



إلغاء التسلسل هو عكس التسلسل ، وهو عملية تحويل كائن إلى تدفقات من البايت. يتم إجراء التسلسل دائمًا على جانب الخادم لنقل العناصر أو تخزينها ، ونقوم بإلغاء تسلسل البيانات الواردة في تطبيقنا من مصادر مختلفة.





وبالتالي ، نحن منفتحون على العديد من التيارات الضارة.



لحماية تطبيقك من المهاجمين ، نحتاج إلى التحقق من صحة البيانات قبل إلغاء التسلسل وبعده.



13. حافظ دائمًا على الإصدارات المحدثة من الأطر والمكتبات الخاصة بك



قم دائمًا بتحديث الأطر والمكتبات المستخدمة في مشروعك. لا تستخدم أبدًا مكتبات قديمة في مشروعك ، لأن المهاجمين يجدون باستمرار نقاط ضعف فيها.



تحقق من وجود تحديثات لحزم NuGet المستخدمة في مشروعك وقم بتحديثها بانتظام.





خاتمة



لا يوجد شيء آمن بنسبة 100٪ ، ولكن يجب أن نجعل تطبيقنا آمنًا قدر الإمكان باتباع أفضل الممارسات. على الرغم من أن .Net Core يعتبر أحد أكثر المنصات أمانًا ، إلا أننا ما زلنا بحاجة إلى مراقبة النشاط في تطبيقنا واتخاذ إجراءات سريعة في حالة وجود أي نشاط ضار.



نشكرك على قراءة مقالتي ، وآمل أن يكون ذلك دافعًا لك للتفكير في جعل تطبيق Asp.Net Core أكثر أمانًا .



سأكون سعيدًا إذا كنت ترغب في ترك تعليقاتك في قسم التعليقات أدناه.



إليك بعض المقالات الأخرى التي قد تهمك:








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






:






All Articles