نشرة مرحة. مراقبة المنتدى أو محاولة تخزين المحتوى الديناميكي مؤقتًا. إعادة تسمية لوحة الإدارة والتحديث

09.12.2020

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

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

هل الشركة شركة بيع زائد؟

أيها السادة ، أتوسل إليكم ، لا تستخدموا استضافة يتم إعادة بيعها (زيادة في البيع). على الأرجح ستحصل على قطعة من "البيدر" الذي ستعاني منه لفترة طويلة. ولكن كيف نعرف ما إذا كان يتم إعادة بيع الاستضافة عبر 50 توزيع ورق؟ لا توجد أسرار ، فسيتم تقديم مساحة 500 أو 1500 جيجابايت (هنا أبالغ بالطبع ، ولكن ليس كثيرًا) وعرض نطاق ترددي يبلغ 100 تيرابايت مقابل 5 دولارات فقط. أليست جيدة جدا؟ لكن هذا هراء ، في الواقع ، لا تحتاج إلى أكثر من 2-10 غيغابايت مساحة القرص، ثق بي. وعرض النطاق الترددي 50-200 جيجا لأذنيك وخاصة في الأزواج الأوائل.

هل الشركة موزع؟

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

حد حجم قاعدة البيانات!

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

عدد الاتصالات المتزامنة بقاعدة البيانات.

أوه نعم ، هذا مهم بنسبة 100٪. هذا مهم جدًا خاصةً إذا كنت تعمل مع Vbulletin. مع مرور الوقت ، ينمو الاتصال المتزامن فقط. تقدم معظم شركات الاستضافة المشتركة 10-250 ، كل هذا يتوقف على الاستضافة. فقط اتصل بالدعم الفني واسألهم عن ذلك. ولكن ، ليست كل الاستضافة المشتركة لديها هذه المعلومات ، أو ستشاركها معك.

تعليقات! هل هو جيد أو سيئ؟

دعم تقني.

يتمتع معظم مزودي الاستضافة بدعم فني على مدار الساعة يعمل على مدار الساعة طوال أيام الأسبوع البريد الإلكترونيأو تذاكر أو icq أو سكايب أو بطريقة أخرى. لكن إلى متى سوف يساعدونك؟ في بعض الأحيان يلعب هذا دورًا حاسمًا.

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

شركة كبيرة مشهورة أو جديدة غير معروفة؟

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

إذا احتفظت بالمنتدى الخاص بك ، فعاجلاً أم آجلاً عليك التفكير في حماية المنتدى الخاص بك - بعد كل شيء ، المهاجمون ليسوا نائمين! في هذا الموضوع ، قمت (بمساعدة ReaM habrauser) بتجميع قائمة من النصائح لزيادة أمان المنتدى الخاص بك. مهتم؟ مرحبا بكم في habrakat :)

لذلك ، لنبدأ:

1) التحديث إلى نهاية المسطرة (3.5.x ، 3.6.x ، 3.7.x)

وصف:بدون تعليقات

لماذا؟:تعمل Jelsoft باستمرار على تصحيح نقاط الضعف الناشئة. لا أحد يريد العمل في منتدى العام الماضي المتسرب ، أليس كذلك؟

2) إعادة تسمية لوحة الإدارة والتحديث

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

لماذا؟:إذا قمت بإعادة تسمية لوحة الإدارة ولم تحدد المسار في التكوين ، فسيكون العثور عليه أكثر صعوبة وبالتالي تطبيق XSS أو شيء أسوأ. هناك عيوب: - تحرير ملف التعريف وإضافة وسطاء سيتوقف عن العمل دون تحرير الروابط يدويًا.

3) نضع .htaccess في لوحة الإدارة:

وصف:
أ) إذا كانت الملكية الفكرية ثابتة ثم
أمر يسمح ، يرفض
رفض من الجميع
سماح من٪ your_IP٪

ب) قمنا أيضًا بتعيين كلمة مرور إضافية:

لماذا؟:الحماية الإضافية بكلمة مرور لمنطقة المسؤول لا تؤذي أبدًا.

4) حذف الملفات والمجلدات:

وصف:
أ) حذف الملفات:
/validator.php (إن وجد)
/checksum.md5 (إن وجد)
ب) حذف المجلدات:
/ تثبيت /

لماذا؟:يمكن أن تمنح الملفات غير الآمنة من الإصدارات الصفرية القدرة على عرض قائمة الملفات ، ومجلد التثبيت ضار جدًا =)

5) نقل المرفقات والصور الرمزية

ب) الصور الرمزية -> نوع تخزين صورة المستخدم
يجب تخزين الصور الرمزية في قاعدة البيانات

لماذا ا؟: السطر 3.5 ، إذا أسعفتني ذاكرتي ، فقد أعطاني روابط مباشرة للصور - والتي ، مع تكوين استضافة غير صحيح ، أعطت فرصة لإغراق الغلاف.

6) نقوم بتعيين حقوق المجلدات

وصف:إذا اكتملت الخطوة 5 ، فيمكننا الآن تعيين الحقوق للمجلدات custom_ * 644 بأمان ، نظرًا لأننا لم نعد بحاجة إليها (أو يمكنك حذفها). علاوة على ذلك ، إذا قمت بتثبيت vBulletin وفقًا للإرشادات ، فيجب أن تحتوي جميع المجلدات في / (الجذر) على أذونات 644. حدد هذا ، إذا لم يكن كذلك ، فقم بتعيين الأذونات على 644.

لماذا؟:مما يجعل من الصعب على المخترق ملء القشرة.

7) في أي مكان ، أبدًا ، لا تقم بتمكين خيار "السماح بتنسيق html" لأي شخص.

وصف:بدون تعليقات. لماذا قد يحتاج أي شخص HTML؟
لماذا؟:إمكانية هجمات XSSعندما تكون الوظيفة في وضع التشغيل.

8) ضع .htaccess على المجلد include

وصف: ضع .htaccess في مجلد include بالمحتوى التالي:

الأمر يسمح ، يرفض
رفض من الجميع

لماذا؟:

  • إذا غمرت القذيفة هناك بأي شكل من الأشكال ، فلن يتمكنوا من دخولها.
  • إذا شعرت بالملل ، فمن الممكن أن يسقط مترجم php ويبقى Apache فقط - ويسمح لك Apache بالفعل بقراءة ملفات php - لذلك يمكنك قراءة جميع الملفات من المجلد / include / - نفس التكوين .php ، وهي ليست جيدة جدًا.

9) ادخل .htaccess التالي إلى الدليل بالملفات التي تحتوي على سمات 0777:

kerk _http: //vbsupport.org/forum/member.php؟ u = 30

وصف:

RemoveHandler .phtml
RemoveHandler .php
RemoveHandler .php3
RemoveHandler .php4
RemoveHandler .php5
RemoveHandler .cgi
RemoveHandler. exe
RemoveHandler .pl
RemoveHandler .asp
RemoveHandler .aspx
RemoveHandler .shtml


الأمر يسمح ، يرفض
رفض من الجميع

لماذا؟:لم يعد من الممكن استخدام البرامج النصية ذات الامتدادات المحددة داخل الدليل باستخدام htaccess.

10) تحرير config.php ، أدخل معرف المسؤول في حقل المستخدم غير القابل للحذف.

وصف:/includes/config.php. ما عليك سوى إدخال معرف المسؤولين بعد إجراء جميع التغييرات اللازمة على ملف التعريف.
لماذا؟:ليست هناك حاجة لشخص ما لتغيير ملفات تعريف المديرين مرة أخرى ، حتى لأنفسهم. إذا كنت في حاجة إليه ، فسيتم إزالة المعرف من الملف وتغييره وإعادته مرة أخرى. السلامة تأتي أولاً! :)

11) بعد إزالة التعديلات / الاختراقات ، لا تنس حذف الملفات التي قمت بتحميلها معهم.

وصف:بدون تعليقات
لماذا؟:لماذا تحتاج على الخادم ملفات إضافية؟ لا حاجة لذلك ...

12) لا تقم أبدًا بحفظ النسخ الاحتياطية في متناول خادم الويب.

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

13) قم بتثبيت البرنامج المساعد "File Inspector".

المؤلف - الشبح (http://www.vbsupport.org/forum/member.php؟u=38422)

الوصف (اقتباس):

أثناء التسلق عبر البرامج النصية القديمة ، واجهت هذا المنتج - مفتش الملفات. هناك العديد من الوحدات النمطية لـ vBulletin ، والتي يمكنك من خلالها حفظ قائمة بالملفات الموجودة في قاعدة البيانات والتحقق من وقت لآخر إذا تم تغيير أي منها (يتم حفظ الحجم والمالك وحقوق الوصول لكل ملف) - الملف المدمج ستقوم مهمة cron بإخطار المسؤول عن طريق البريد حول التناقضات الموجودة. يمكنك حفظ عدة نسخ مختلفة (مراجعات) من قوائم الملفات للمقارنة في قاعدة البيانات (التحقق التلقائي من إخطار البريد الإلكتروني يتم فحصه فقط مع أحدث مراجعة). يمكن رؤية المظهر والإعدادات المتاحة في لقطات الشاشة.

التثبيت: للتثبيت ، تحتاج إلى تحميل ملفي PHP من الأرشيف إلى الخادم واستيراد المنتج من الملف "product-gfi.xml".

تحديث: لا يوجد تحديث إصدار متاح ، لذلك يوصى أولاً بإلغاء تثبيت الإصدار السابق لتثبيت إصدار جديد.

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


تنزيل من vbsupport.org

لماذا؟:لا غنى عن البحث عن الاصداف في الموقع ولكن يجب تثبيتها مسبقا.

حصيلة:

من الصعب جدًا الوصول إلى لوحة الإدارة - لذلك ، قم بملء الغلاف من خلال لوحة الإدارة أيضًا. يمكنك تحميل الصدفة من خلال ثغرات BB ، ولكن إذا قمت بالتحميل إلى / تضمين (هناك ملفات لبعض الاختراقات التي تتطلب 777) ، فعندئذٍ رفضنا من الكل في مجلد التضمين - لن يمكن الوصول إلى الصدفة ببساطة من الخارج !

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

في الواقع ، هذا كل شيء ... هذا هو أول موضوع لي عن حبري ، لذا من فضلك لا تهتم كثيرًا :)

محدث: انتقل إلى "أمن المعلومات".

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

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

تم العثور على الثغرة الأمنية الثانية بواسطة باحثين من TRUEL IT وتلقوا المعرف CVE-2017-17672. يتعلق بخصائص إلغاء تسلسل البيانات في المحرك ويمكن استخدامه من قبل المهاجم لحذف الملفات التعسفية في النظام.

تم نشر تقارير كاملة توضح بالتفصيل كلتا القضيتين كجزء من برنامج Beyond Security الخاص بـ SecuriTeam. هناك أيضًا ثغرات PoC لإظهار نقاط الضعف. دعنا نذهب من خلال كل هذا بالترتيب.

تحضير

لقد استخدمت توزيع WAMP كخادم.

نقرأ الملفات وننفذ الأوامر

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

يبدأ مسارنا بالملف الأكثر أهمية - index.php ، حيث يتم التهيئة الأساسية للتطبيق.

/index.php
48: التطبيق $ = BB5_Frontend_Application :: init ("config.php")؛ ... 60: التوجيه $ = $ app-> getRouter ()؛ 61: طريقة $ = التوجيه $-> getAction ()؛ 62: $ template = $ routing-> getTemplate ()؛ 63: $ class = $ routing-> getControllerClass ()؛

دعنا نلقي نظرة على طريقة BB5_Frontend_Application :: init.

/includes/vb5/frontend/application.php
13: امتدت فئة BB5_Frontend_Application إلى BB5_ApplicationAbstract 14: (15: تهيئة الوظيفة الثابتة العامة ($ configFile) 16: (17: الأصل :: init ($ configFile) ؛ 18:19: self :: $ enterprise = جديد BB5_Frontend_Application () ؛ 20: self :: $ example-> router = جديد BB5_Frontend_Routing () ؛ 21: self :: $ مثيل-> جهاز توجيه-> setRoutes () ؛

نحن هنا مهتمون بطريقة setRoutes.

47: setRoutes الوظيفة العامة () 48: (49: $ this-> processQueryString () ؛ ... 54: if (isset ($ _ GET ["routestring"])) 55: (56: $ path = $ _GET [ "التوجيه"] ؛

يحصل متغير المسار $ على قيمة تاريخ المستخدم من معلمة التوجيه. يمكنك تمرير المسار إلى صفحة المنتدى فيه ، وسيتم تحميله.



لنفترض أننا نجحنا / نجحنا في الاختبار.

بعد تعيين متغير ، يتبعه جزء من التعليمات البرمجية يتخلص من الشرطة المائلة في بداية السطر ، إن وجدت.

/includes/vb5/frontend/routing.php
75: if (strlen ($ path) AND $ path (0) == "/") 76: (77: $ path = substr ($ path، 1)؛ // $ path = "test" 78 :)
يتضمن \ vb5 \ frontend \ routing.php
83: if (strlen ($ path)> 2) 84: (85: $ ext = strtolower (substr ($ path، -4))؛ 86: if (($ ext == ".gif") OR ($ ext == ".png") OR ($ ext == ".jpg") OR ($ ext == ".css") 87: OR (strtolower (substr ($ path، -3)) == ".js" )) 88: (89: header ("HTTP / 1.0 404 Not Found") ؛ 90: die ("") ؛ 91 :) 92 :)

كما ترى ، فإن الاختبار غريب إلى حد ما. على الأقل ، فإن وجود قائمة بالامتدادات المحظورة المضمنة في الكود أمر محرج. وبشكل عام ، فإن حقيقة الحصول على الامتداد عن طريق تجريد أربعة أحرف من نهاية السطر (السطر 85) أمر محير. بشكل عام ، إذا حاولنا الحصول على ملف بامتدادات gif أو png أو jsp أو css أو js ، فسيعيد الخادم صفحة 404 وسيتوقف البرنامج النصي عن التنفيذ. بعد اجتياز جميع عمليات التحقق ، يتم استدعاء طريقة getRoute من فئة BB_Api_Route باستخدام callApi. يبحث عن طرق مناسبة بناءً على المعلومات المقدمة من المستخدم.

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

الخيار 1. انضم إلى مجتمع "الموقع" لقراءة جميع المواد الموجودة على الموقع

ستتيح لك العضوية في المجتمع خلال الفترة المحددة الوصول إلى جميع مواد القرصنة ، وزيادة الخصم التراكمي الشخصي الخاص بك والسماح لك بتجميع نقاط Xakep احترافية!

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

عفا عليها الزمن
  • منتدى vBulletin 3.8.x
  • تم النقل إلى المجال الفرعي forum.domain.com
  • Nginx 1.1.13 ، php 5.3.x (fpm)
  • بصرف النظر عن المنتدى ، لا شيء يعمل على هذا الخادم. ( انه مهم).
  • Mysql على خادم منفصل ، الاتصال عبر TCP / IP.
خلفية
لقد عشت منتدى لنفسي ، ولم أحزن ، أظهر xm أعلىتحميل في حدود 30-40 في المئة. ثم جاءت الساعة "X" وقفز الحمل إلى الرف المسطح بنسبة 90 في المائة مع قمم أعلى ، وهو في الواقع ليس مزعجًا. لم يتم تأكيد الاشتباه في DDOS. تمت ملاحظة عبء العمل الطبيعي عبر السجلات. حسنًا ، قبل زيادة الموارد بغباء ، ظهرت فكرة لفهم ما كان يحدث ومحاولة تخزين كل ما كان ممكنًا في ذاكرة التخزين المؤقت.
تحقيق. الجزء الأول - ما تريده الزائرة
نظرًا لأنني لم أكن على دراية بأيديولوجية هذا البرنامج وميزاته ، فقد بدأت في دراسة المشكلة من خلال تحليل السجلات وحركة المرور بين الزوار والخادم. بادئ ذي بدء ، لقد فوجئت عندما اكتشفت أن مرفقات الرسائل في المنتدى يتم تقديمها حصريًا بواسطة نص برمجي مرفق. php، بينما يمكن تخزين الملفات نفسها في قاعدة البيانات ، يمكن أن تكون كذلك قرص محليولكن العودة تتم فقط من خلال البرنامج النصي. ولا شيء غير ذلك. أي أننا نحصل على 8-10 هزات إضافية لمترجم php لكل فرع رسالة مع 8-10 صور. وهذا لكل زائر. نظرًا لأن هذا المنتدى لا يتطلب التسجيل لعرض المرفقات ، فيمكن تخزين المرفقات مؤقتًا لمدة يومين على سبيل المثال. شيء من هذا القبيل:
location = /attachment.php (expires max؛ limits_req zone = lim_req_1s_zone burst = 5 ؛ fastcgi_pass forum__php_cluster ؛ include / etc / nginx / fastcgi_params ؛ تشمل / etc / nginx / fastcgi_params_php-fpm ؛ fastcgi_cache_cache Control forum_attgi_cache ؛ fastcgi_cache_cache Control_attgi ملف تعريف الارتباط ؛ fastcgi_hide_header Pragma ؛ fastcgi_cache_key "$ request_method: $ http_if_modified_since: $ http_if_none_match: $ host: $ request_uri:"؛ fastcgi_cache_use_stale مهلة تحديث الخطأ غير صالحة_helock http_500؛ http-section_cache_forcache_forcache_att____ 2 keys_zone = forum_att__cache: 4m max_size = 2g غير نشط = 2d ؛

أما "الوحي" الثاني بالنسبة لي فهو أن هناك أرشيفات في المنتدى ، وهي ليست موجودة فقط ، ولكن ما يقرب من نصف الطلبات تأتي منها. يتيح لك مظهر الصفحات أيضًا تخزين محتواها مؤقتًا:
الموقع / الأرشيف / (تنتهي صلاحيته 10d؛ limit_req zone = lim_req_1s_zone burst = 2؛ location ~ \ .css $ (تنتهي بحد أقصى ؛) fastcgi_pass forum__php_cluster؛ fastcgi_index index.php؛ include / etc / nginx / fastcgi_params ؛ تشمل / etc / nginx / fastcgi_params -fpm؛ fastcgi_param SCRIPT_FILENAME $ document_root / archive / index.php؛ fastcgi_param SCRIPT_NAME $ fastcgi_script_name؛ fastcgi_cache forum_arc__cache؛ fastcgi_hide_header Set-Cookie؛ fastcgi_ignore_giire. وفي قسم http: fastcgi_cache_path / var / cache / nginx / arc levels = 1: 2 keys_zone = forum_arc__cache: 4m max_size = 2g inactive في نفس الوقت ، سوف نؤمن ضد هجمات DDOS: limit_req_zone "$ psUID" zone = lim_req_1s_zone: 2m rate = 1r / s؛
سأخبرك عن تشكيل مفتاح "$ psUID" لاحقًا.

تحقيق. الجزء الثاني - التفويض في المنتدى
من وجهة نظر زائر المنتدى ، يمكن أن يكون الزائر إما مستخدمًا مسجلاً أو ضيفًا. ولكن يتطور وضع مختلف تمامًا إذا لاحظنا الوضع "جاء ، وسار ، وسجّل الدخول ، وسار ، وخرج ، وسار" من وجهة نظر ظهور واختفاء ملفات تعريف الارتباط في المتصفح. لذلك ، امسح ملفات تعريف الارتباط للمجال والمجالات الفرعية الخاصة به ، وافتح HTTPfox ولاحظ ما يحدث:
HTTP / 1.1 200 OK Set-Cookie: PHPSESSID = cdme9rrptft67tbo97p4t1cua5 ؛ تنتهي الصلاحية = الأربعاء ، 22 فبراير 2012 15:04:12 GMT ؛ المسار = / ؛ المجال = .domain.com Set-Cookie: bblastvisit = 1329059052 ؛ تنتهي الصلاحية = الاثنين ، 11 فبراير 2013 15:04:12 GMT ؛ المسار = / ؛ المجال = .domain.com Set-Cookie: bblastactivity = 0 ؛ تنتهي الصلاحية = الاثنين ، 11 فبراير 2013 15:04:12 GMT ؛ المسار = / ؛ المجال = .domain.com Set-Cookie: uid = XCuiGU831OyC8VLqAx / QAg == ؛ تنتهي الصلاحية = الخميس ، 31 ديسمبر - 37 23:55:55 GMT ؛ المجال = .domain.com ؛ المسار = /
مع uidو PHPSESSIDكل شيء واضح - هذه هي مؤامرات nginx "a ومفسر php مع مجموعة الخيارات جلسة. auto_start، ولكن الباقي - تتبع النشاط في المنتدى. لكن الجلسة الرئيسية لملف تعريف الارتباط vBulletin لم يتم ملاحظتها بعد. بالنظر إلى المستقبل ، سأقول أن vBulletin لا يستخدم جلسة php قياسية (بتعبير أدق ، معظمها لا يستخدمها) ، لكنه يحتفظ بمعرّف خاص به ، يتم تخزين معرفه في ملف تعريف ارتباط bbsessionhash... لذلك ، تم تسجيل دخول المستخدم ، ولكن لا توجد جلسة - أي أنه مجهول الهوية بدون جلسة. في هذه الحالة ، يمكن أن تكون الروابط المؤدية إلى المنتدى من نوعين (أي جميع الروابط الموجودة على الصفحة ، وليس أحدها مثل هذا ، ولكن الآخر من هذا القبيل):
forum.domain.com/forumdisplay.php؟s=12b66e447be52ebc84ab16d3f39626fb&f=69
forum.domain.com/forumdisplay.php؟f=69
وإذا اتبعت رابط النوع الأول ، فستتلقى الاستجابة التالية من المنتدى ملف تعريف ارتباط الجلسة ، ولكن إذا اتبعت الرابط الثاني - لا. إذا لم يأت ملف تعريف الارتباط من الجلسة بالإجابة الثانية ، فيمكنك التجول في المنتدى بدون جلسة والقلق حتى تصادف رابط من النوع الأول (لم أتمكن من تحديد نمط مظهرهم) ، أو أنت تريد تسجيل الدخول. إذا كان تسجيل الدخول ناجحًا ، فسيأتي ملف تعريف ارتباط الجلسة على أي حال. إذا كان الضيف مجهول الهوية قبل تسجيل الدخول ، فسيتم استبدال الجلسة. تبدو هكذا:
HTTP / 1.1 200 OK Set-Cookie: bbsessionhash = ؛ المسار = / ؛ المجال = .domain.com ؛ HttpOnly
بعد تسجيل الدخول ، تكون الجلسة "مستقرة" ولا توجد قفزات في الارتباطات. لا يختلف إجراء تسجيل الخروج من حيث الأصالة - يتم حذف جميع ملفات تعريف الارتباط الموجودة بالمنتدى (حتى تلك التي لم يتم تعيينها) ويتم كتابة ملف تعريف ارتباط لجلسة جديدة ("مجهول"):
HTTP / 1.1 200 OK Set-Cookie: bbsessionhash = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bblastvisit = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bblastactivity = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbthread_lastview = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbreferrerid = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbuserid = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbpassword = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbthreadedmode = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bbstyleid = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ domain = .domain.com Set-Cookie: bblanguageid = محذوف ؛ تنتهي الصلاحية = الخميس ، 01 يناير 1970 00:00:01 GMT ؛ المسار = / ؛ المجال = .domain.com Set-Cookie: bbsessionhash = ؛ المسار = / ؛ المجال = .domain.com ؛ HttpOnly
أي ، عند الإخراج نحصل على مجهول (ضيف) ، لكن مائة بالمائة لديه جلسة.
نتيجة لذلك ، من وجهة نظر برامج المنتدى وبالنسبة إلى رؤوس HTTP ، لدينا ثلاثة أنواع من المستخدمين: ضيف بدون جلسة, ضيف مع الجلسة, زائر مسجّل الدخول... علاوة على ذلك ، عند مستوى nginx "a ، من الصعب للغاية التمييز بين المستوى الثاني والثالث.

الآن ، بعد أن فهمت ملفات تعريف الارتباط وكيف يتم نقلها بين الزائر والخادم ، يمكنك التعامل مع مشكلة التخزين المؤقت للمحتوى الديناميكي. كما تعلم ، فإن وظيفة التخزين المؤقت لاستجابات fastcgi الخلفية في nginx مدمجة في الوحدة النمطية ngx_http_fastcgi_module. للقيام بذلك ، تحتاج إلى تسجيل منطقة التخزين المؤقت عالميًا في قسم http ، وفي الموقع المطلوب "e - the key. والمستخدم. قد يبدو الأمر كقاعدة مثل
fastcgi_cache_key "request_method $: http_if_modified_since $: http_if_none_match $: $ host: $ request_uri: $ cookie_bbsessionhash:"؛
يمكن أن يرضي كل من الضيوف والمستخدمين الذين قاموا بتسجيل الدخول ، ومع ذلك ، من الناحية العملية ، بدأ الزوار في تلقي محتويات ذاكرة التخزين المؤقت لشخص آخر. كان علينا تعطيل التخزين المؤقت للديناميكيات "الحقيقية". آمل أن يكون الحكم غير نهائي.

لكن هذه المعلومةليس عديم الفائدة. بناءً عليه ، يمكننا إنشاء مفتاح للحد من تكرار الطلبات بناءً على عنوان IP الخاص بالزائر فحسب ، بل بناءً على حالته أيضًا.
ضع $ psUID "anon"؛ ضع $ psUCL "anon" ؛ if (cookie_bbsessionhash $) (اضبط $ psUID "$ cookie_bbsessionhash" ؛ اضبط $ psUCL "user" ؛) if ($ psUCL = "anon") (ضع $ psUID "anon: $ remote_addr" ؛)
نضع هذا الجزء من التكوين في قسم الخادم لتكوين nginx قبل وصف جميع المواقع. نتيجة لذلك ، نحصل على المفتاح الأصلي للمستخدم الذي لديه الجلسة والمفتاح بناءً على عنوان IP لزوار الجلسة الذين ليس لديهم (على سبيل المثال ، لبرامج زحف البحث).

النتائج
نتيجة للجهود المبذولة ، تم تقليل إجمالي الحمل على الجهاز الظاهري من الرف بنسبة 90 بالمائة إلى المنشار بنسبة 40 مع رشقات نارية تصل إلى 80 بالمائة.

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

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

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

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

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

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

تصميم

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

  • تغيير أو إضافة خلفية الموقع.
  • أضف صورة بدلاً من الخلفية.
  • قم بتحرير ملف النمط.

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

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

تحسين محركات البحث (SEO)

لا توجد وحدة خاصة لتحسين محرك البحث على CMS vBulletin. ومع ذلك ، هذا لا يعني أن المنتدى لا يحتاج إلى العمل فيه. تخضع المواقع لمتطلبات الوجود الإلزامي لعلامة H1 ، والتي يتم من خلالها تحديد الروبوت بواسطة سمة الصفحة. لإعداد الفهرسة ، تحتاج إلى تحرير ملف robots.txt - يمكن العثور على نصائح حول كيفية تنسيقه بشكل صحيح في المنتديات المخصصة للمواقع على vBulletin.

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

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

التعريفات

ترخيص مدى الحياة مع تحديثات لمدة عام سيكلف 250 دولارًا. مقابل هذا المال ، تتوفر جميع ميزات المحرك:

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

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

  • لمواصلة تلقي التحديثات ، عليك دفع 209 دولارات أمريكية كل عام. يقدم المطورون أيضًا إضافات مدفوعة:
  • إزالة العلامة التجارية في التذييل عبر الموقع بالكامل - 169 دولارًا لمرة واحدة.
  • دعم إضافي عبر الهاتف أو التذاكر - 49 دولارًا في الشهر أو 329 دولارًا في السنة.
  • التثبيت الاحترافي أو ترقية المحرك - دفع 149 دولارًا لمرة واحدة.

إذا كنت تريد أن يبدو المنتدى جيدًا على الشاشات الصغيرة ، فيمكنك شراء Mobile Pack. سيكلف الترخيص 399 دولارًا ، وتجديد التحديثات - 359 دولارًا سنويًا. بشكل منفصل اصدار المحموليكلف 199 دولار. بدونها ، يمكن عادة استخدام المنتدى على الكمبيوتر فقط.

عند اختيار vBulletin Cloud ، هناك ثلاث خطط متاحة: البرونزية والفضية والذهبية. كلهم يقدمون:

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

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

يبدأ سعر الفضة من 39.95 دولارًا في الشهر (29.99 دولارًا عند إصدار الفاتورة سنويًا) ويأتي مع 75 جيجا بايت من النطاق الترددي والدعم عبر نظام التذاكر. هذا المعدل مناسب للمجتمعات المتنامية ذات حركة المرور المتوسطة.

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

المميزات والعيوب

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

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

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

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

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