دورة معهد ماساتشوستس للتكنولوجيا "أمن أنظمة الكمبيوتر". المحاضرة 11: لغة برمجة Ur / Web ، الجزء 1

معهد ماساتشوستس للتكنولوجيا. محاضرة رقم 6.858. "أمن أنظمة الكمبيوتر." نيكولاي زيلدوفيتش ، جيمس ميكنز. 2014 سنة


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

المحاضرة 1: "مقدمة: نماذج التهديد" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 2: "السيطرة على هجمات القراصنة" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 3: "تجاوزات العازلة: المآثر والحماية" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 4: "فصل الامتيازات" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 5: "من أين تأتي أنظمة الأمن؟" الجزء 1 / الجزء 2
المحاضرة 6: "الفرص" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 7: "وضع حماية العميل الأصلي" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 8: "نموذج أمن الشبكات" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 9: "أمان تطبيق الويب" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 10: "التنفيذ الرمزي" الجزء 1 / الجزء 2 / الجزء 3
المحاضرة 11: "لغة برمجة Ur / Web" الجزء 1 / الجزء 2 / الجزء 3

نيكولاي زيلدوفيتش: لنبدأ يا رفاق! لذلك ، سنتحدث اليوم عن نهج مختلف تمامًا وأساسي لإنشاء تطبيقات ويب آمنة. يتعلق الأمر بنظام يسمى Ur / Web. الآن سيخبرك ضيفنا آدم شيبالا ، مؤلف هذا النظام ، وهو أستاذ في معهد ماساتشوستس للتكنولوجيا ، عن النظام الذي أنشأه.



آدم تشيبالا: أريد الوصول إلى المظاهرة بأسرع وقت ممكن. ولكن قبل ذلك سأعرض بعض الشرائح لشرح محتويات هذا النظام. ربما لديك بالفعل بعض الأفكار حول هذا من ملاحظات المحاضرة اليوم.

إذن ما هو Ur / Web؟ من المفيد دائمًا البدء بشرح لما يعنيه عنوان الموضوع. Ur / Web هي لغة برمجة في المقام الأول لبناء تطبيقات الويب. هذا ما يحمله الويب باسمه. هذا هو نوع من نظام مكدس كامل يقوم بكل ما تحتاجه لإنشاء تطبيقات الويب. تعني Ur لغة لغة البرمجة العالمية الجديدة التي يتم استخدامها لتنفيذ وظائف الويب هذه.

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

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

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



في الوقت الحالي ، يوجد بالفعل العديد من مستخدمي Ur / Web ، ومع ذلك ، لا يوجد الكثير منهم مثل أولئك الذين يستخدمون لغات برمجة أخرى. ولكن على الأقل هو تطبيق الويب التجاري الوحيد الذي هو قارئ RSS ويدعم الميزات الغريبة مثل عرض التعليقات. هناك أيضًا عنوان URL اخترعه متحدث اللغة الإنجليزية غير الأصلي والذي يأسف الآن لمثل هذا الاسم. يطلق عليه BazQux Reader ، وهو مزيج من المهارات التكتيكية لمجتمع القراصنة. هذا التطبيق لديه بالفعل عدة آلاف من المستخدمين المدفوعين. ويبدو أن التعامل معها أفضل بكثير مما يتم عمله مع CSS. هذا دليل على أنه يمكن القيام بذلك باستخدام Ur / Web.

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

تم دمج بعض الوظائف التي ترغب في الحصول عليها للأمان بالفعل في النظام ، لذلك لا يتعين عليك العمل بجد لضمان أمان برنامجك. سأخبركم المزيد عن هذا في المستقبل القريب.

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

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

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



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

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

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

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

تعرض الشريحة التالية معيارًا سريعًا لأداء إطار عمل البنية التحتية للويب التابع لجهة خارجية.

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



يمكنك أن ترى أن Ur / Web احتل المرتبة الرابعة من بين 60 إطار عمل شارك في اختبارات الأداء. بعد أخذ لقطة الشاشة هذه ، تم إجراء المزيد من التحسينات على المترجم. لذلك ، أتوقع أنه في الجولة المقبلة ، وفقًا لنتائجه ، سوف يتقدم قليلاً. في الأساس ، هذا مثال بسيط على استخدام SQL لإنشاء صفحات HTML. تتلقى حوالي 100000 طلب في الثانية من خادم Ur / Web ، وهذا أكثر من كافٍ لمعظم التطبيقات. من المهم أن تشير هذه الشريحة إلى أنه يمكنك استخدام نموذج عالي المستوى يوفر قدرًا أكبر من الأمان من خلال فقد الأداء قليلاً في الأطر الأكثر شيوعًا.

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

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

الصورة المعتادة هي أن المتصفح يبدأ في التفاعل مع خادم الويب عن طريق إرسال طلب HTTP إليه ، والذي يتضمن عناوين URL المضمنة فيه. بعد ذلك ، يرسل خادم الويب صفحة HTTP و HTML إلى المتصفح. ومع ذلك ، هناك بعض عناوين URL المضمنة التي يمكن استخدامها لتحديد الطلب الذي يجب أن يقدمه خادم الويب في المستقبل.



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



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



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



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

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



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

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



الطالب: كلها خطوط يمكن أن تضع فيها أي شيء.

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

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

تعرض الشريحة الآن نموذجًا بديلًا يوفره Ur / Web ويتم تجميعه في نموذج تقليدي. لذلك يعمل في جميع المتصفحات المنتشرة. لكن المبرمج يمكنه التفكير في الأمر على مستوى أعلى وتجنب الأخطاء المحتملة التي كانت ممكنة في الصورة السابقة.



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

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

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

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



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

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

وهي تسهل حقًا تشغيل الاستعلامات المتزامنة وربما تساعد في تجنب مشاكل الأمان التي تنشأ عندما يكون هناك بعض التناوب لمجموعات معينة من الاستعلامات.

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



الطالب: ربما يمكن أن يسبب هذا نوعًا من الفشل في خدمة DoS؟ إذا كان سيعيد تشغيل المعاملة التي ترسلها ، وتعلم أنها لن تنجح ، يمكنك ببساطة إعادة تشغيل هذه العملية وإعادة المحاولة ...

الأستاذ: حسنا ، استمر ...

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

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

الطالب: هل هذه هي الطريقة الوحيدة لفشل المعاملة؟

الأستاذ: نعم ، هذه هي الطريقة الوحيدة للتسبب في حدوث تعطل وإعادة التشغيل التلقائي.

الطالب: ربما يكون هناك طرف ثالث يفشل بشكل مشروط. ثم يمكنك استخدام هذا لمراقبة سلوك المستخدمين الآخرين.

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



: , , , . , ?

: , , , .

: , , , ? , .

: , , . , .

: , , , , , ?

: , , , , , ? , – , . . , , .

: , , ?

: , , . , , , . , – .

, -. AJAX, .



, . , . , - .



, . , .

, Ur/Web , . — , . , , . — , , .

— , , , . , , , .

. Ur/Web- Ur/Web-. JavaScript, . , . .

, , . , . , , , . , , , .



. , , , , , . . , , JavaScript.

JavaScript , , , JavaScript .

, , Ur/Web- — . , , , . JSON. .



, , . , . . - .

, , , , . : «, », . «» .



, . , ?

: , ?

: RPC , . , .

— , . , , .

: ?

: HTTP-. , - , , , HTTP .
, , . . , Ur/Web. , .



, . , , URL- URL-. . , URL.

URL . - , URL. , HTML . HTML. , XML-, , .

- , . HTML- , .



, , . , , UTF-8. , .

, UTF-8, . - , Tangled Web ( ), Ur/Web, , .

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

أعتقد أن هذه هي الطريقة الأكثر إنتاجية لإثبات قدرات Ur / Web.

27:45 دقيقة

دورة معهد ماساتشوستس للتكنولوجيا "أمن أنظمة الكمبيوتر". المحاضرة 11: لغة برمجة Ur / Web ، الجزء 2


النسخة الكاملة من الدورة متاحة هنا .

شكرا لك على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية به لأصدقائك ، خصم 30 ٪ لمستخدمي Habr على نظير فريد من خوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة حول VPS (KVM) E5-2650 v4 (6 نوى) 10GB DDR4 240GB SSD 1Gbps من 20 $ أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا وحتى 40 جيجابايت DDR4).

VPS (KVM) E5-2650 v4 (6 نوى) 10GB DDR4 240GB SSD 1Gbps حتى ديسمبر مجانًا عند الدفع لمدة ستة أشهر ، يمكنك الطلب هنا .

ديل R730xd أرخص مرتين؟ فقط لدينا 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV من 249 دولارًا في هولندا والولايات المتحدة! اقرأ عن كيفية بناء مبنى البنية التحتية الطبقة باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

Source: https://habr.com/ru/post/ar425997/


All Articles