• مشاهدات vBulletin یا تلاش برای ذخیره محتوای پویا. مشاهدات vBulletin یا تلاش برای ذخیره محتوای پویا. vbulletin دقیق

    اگر شما انجمن vbulletin خود را اداره می کنید، دیر یا زود باید به فکر محافظت از انجمن خود باشید. بیا شروع کنیم:

    1) بیایید تا آخر خط خود را به روز کنیم (3.5.x، 3.6.x، 3.7.x)

    شرح: -
    چرا؟: JelSoft دائماً آسیب پذیری های در حال ظهور را می بندد.

    2) نام پنل های مدیریت و نظارت را تغییر دهید

    توضیحات: ما نام پنل مدیریت را تغییر می دهیم، اما در پیکربندی تحت هیچ شرایطی مسیر پنل مدیریت تغییر نام یافته خود را نمی نویسیم. ما همچنین نام mod را تغییر می دهیم، اما می توان آن را قبلاً در پیکربندی ثبت کرد (اگرچه توصیه نمی شود)، زیرا کمتر آسیب پذیر است
    چرا؟: اگر نام پنل مدیریت را تغییر دهید و مسیر را در پیکربندی مشخص نکنید، پیدا کردن آن بسیار دشوارتر خواهد شد و بنابراین XSS یا بدتر از آن را اعمال کنید. معایبی وجود دارد: - ویرایش یک نمایه و افزودن ناظران بدون ویرایش دستی پیوندها کار نمی کند.

    3) htaccess را در پنل مدیریت قرار دهید:

    شرح:
    الف) اگر ip ثابت است، پس
    کد:

    دستور مجاز، رد کردن از همه اجازه از شما.ip.add.res

    ب) همچنین یک رمز عبور اضافی تعیین می کنیم:
    پیوند را دنبال کنید: _http://vbsupport.org/htaccess.php، فیلدها را پر کنید و طبق دستورالعمل ها به فایل htaccess ما اضافه کنید.
    چرا؟: حفاظت از رمز عبور اضافی برای پنل مدیریت هرگز ضرری ندارد.

    4) حذف فایل ها و پوشه ها:

    شرح:
    الف) حذف فایل ها:
    /validator.php (در صورت وجود)
    /checksum.md5 (در صورت وجود)
    ب) حذف پوشه ها:
    /نصب/
    چرا؟: فایل های ناامن از نسخه های صفر می توانند مشاهده لیست فایل ها را ممکن کنند و پوشه نصب بسیار مضر است =)

    5) پیوست ها و آواتارها را جابجا کنید

    شرح:
    به پنل مدیریت بروید، سپس:
    الف) پیوست ها -> روش ذخیره سازی پیوست
    پیوست ها باید در یک پایگاه داده ذخیره شوند
    نقل قول:
    پیوست ها اکنون در پایگاه داده ذخیره می شوند
    ، اگر اینطور نیست، با استفاده از دکمه "Forward" آنها را به آنجا منتقل کنید.
    ب) آواتارها -> نوع ذخیره سازی تصویر کاربر
    آواتارها باید در یک پایگاه داده ذخیره شوند
    نقل قول:

    اکنون تصاویر در پایگاه داده ذخیره می شوند، اگر اینطور نیست، با استفاده از دکمه "Forward" آنها را به آنجا منتقل می کنیم.

    چرا؟: خط 3.5، اگر حافظه ام درست باشد، لینک های مستقیم به تصاویر داده است، که اگر پیکربندی هاستینگ درست نبود، فرصتی برای آپلود پوسته از طریق آن فراهم می کند.
    6) مجوزها را روی پوشه ها تنظیم کنید
    توضیحات: اگر مرحله 5 تکمیل شده باشد، اکنون می توانیم با خیال راحت مجوزهای پوشه های سفارشی***** را روی 644 تنظیم کنیم، زیرا اکنون به آنها نیاز نداریم (یا می توانید آنها را حذف کنید). بعد اگر vbulletin را طبق دستورالعمل نصب کردید، همه پوشه های موجود در / (روت) باید 644 مجوز داشته باشند، این را بررسی کنید، اگر نه، مجوزها را روی 644 تنظیم کنید.
    چرا؟: ایجاد مشکل برای یک هکر برای آپلود پوسته.
    7) هرگز، هرگز، برای کسی، گزینه "Allow html" را فعال نمی کنیم.
    شرح: -
    چرا؟: امکان حملات XSS زمانی که تابع فعال است.

    8) htaccess را در پوشه include قرار دهید

    توضیحات: ما .htaccess را در پوشه include با محتوای زیر قرار دادیم:

    دستور اجازه، انکار از همه

    چرا؟:
    - اگر پوسته ای به نحوی در آنجا سیل شود، آنها نمی توانند به آن دسترسی داشته باشند.
    - اگر آنها شما را ddoss کنند، ممکن است مفسر php بیفتد و فقط Apache باقی بماند - و Apache به شما اجازه می دهد فایل های php را بخوانید - بنابراین خواندن همه فایل ها از پوشه /includes/ امکان پذیر خواهد بود - همان پیکربندی php که خیلی خوب نیست.
    9) آن را به داخل dir فشار دهید. با فایل هایی با ویژگی های 0777 مانند xtax: - (ج) 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 .asp RemoveHandsmoveHandler


    سفارش اجازه، رد
    انکار از همه

    در صورت لزوم کنترل کننده های خود را اضافه کنید
    تمام است، هیچ یک از اسکریپت های لیست شده را نمی توان در این دایرکتوری اجرا کرد
    چرا؟: -

    10) هک را نصب کنید: http://allcheats.ru/product-firewall_vb_rs.xml

    شرح:
    هک را وارد کنید و یک فایل ایجاد کنید: logfile_worms.txt با مجوز نوشتن برای وب سرور (777)
    چرا؟: -
    محافظت در برابر یک دسته از تکالیف "بد" به متغیرها در پست زیر بیشتر بخوانید


    11) config.php را ویرایش کنید، شناسه مدیران را در قسمت کاربر غیرقابل حذف وارد کنید.

    شرح:
    /vb/includes/config.php. کافیست پس از انجام تمام تغییرات لازم در نمایه، شناسه مدیران را وارد کنید.
    چرا؟: -


    12) پس از حذف مودها/هک ها، فراموش نکنید که فایل هایی را که دانلود کرده اید همراه با آنها پاک کنید.

    شرح: -
    چرا؟: -


    13) هرگز نسخه های پشتیبان را در پوشه public_html ذخیره نکنید.

    شرح: -
    چرا؟: برای هرکسی که نام نسخه پشتیبان را بشناسد برای دانلود در دسترس خواهد بود.

    14) افزونه "File Inspector" را نصب کنید. نویسنده - Ghost (http://www.vbsupport.org/forum/member.php?u=38422)
    شرح:

    در حالی که اسکریپت های قدیمی خود را مرور می کردم، با این محصول - بازرس فایل مواجه شدم. اینها چندین ماژول برای vBulletin هستند که با آنها می توانید لیستی از فایل های موجود در پایگاه داده را ذخیره کنید و هر از چند گاهی بررسی کنید که آیا هر یک از آنها تغییر کرده اند (اندازه، مالک و حقوق دسترسی برای هر فایل ذخیره می شود) - داخلی cron task از طریق ایمیل مدیر را در مورد هرگونه مغایرت مشاهده شده مطلع می کند. شما می توانید چندین نسخه (بازبینی) مختلف از لیست فایل ها را برای مقایسه در پایگاه داده ذخیره کنید (تأیید خودکار با اعلان ایمیل فقط با آخرین ویرایش بررسی می شود). ظاهر و تنظیمات موجود در تصاویر قابل مشاهده است.

    INSTALL: برای نصب، باید دو فایل PHP را از بایگانی به سرور آپلود کنید و محصول را از فایل "product-gfi.xml" وارد کنید.

    به روز رسانی: به روز رسانی نسخه ارائه نشده است، بنابراین برای نصب نسخه جدید، توصیه می شود ابتدا نسخه قبلی را حذف نصب کنید.

    ZY این محصول بر روی تمامی نسخه ها از 3.6.8 تا 3.8.1 با موفقیت کار کرد. درست است، پیوندی به منوی کشویی در نوار ناوبری در مکان های مختلف اضافه شده است، اما این موارد جزئی هستند.

    برای گسترش کلیک کنید...

    می توانید افزونه را از لینک زیر دانلود کنید: http://allcheats.ru/gfi.zip یا http://www.vbsupport.org/forum/showthread.php?t=29131 (ثبت نام الزامی است)

    چرا؟: یک چیز غیر قابل تعویض در جستجوی پوسته در یک وب سایت، اما باید از قبل نصب شود.

    ----------

    خلاصه ای کوتاه:

    دسترسی به پنل مدیریت بسیار دشوار است - بنابراین، می توانید پوسته را از طریق پنل مدیریت نیز آپلود کنید، به این معنی که می توانید پوسته را از طریق آسیب پذیری های vola آپلود کنید، اما اگر آن را در شامل بریزید - فایل هایی برای برخی هک ها وجود دارد که نیاز 777 - سپس در پوشه شامل ما رد همه وجود دارد - از پوسته استفاده نکنید!
    و در پوشه‌های باقی‌مانده می‌توانید مجوزها را روی 644 تنظیم کنید، اگر همه مراحل را انجام داده باشید - اگر کروتینگ به درستی پیکربندی شده باشد، آپلود آن بسیار دشوار خواهد بود (یا هر نام دیگری که نامش دارد - کلمه از سر نه چندان هوشیار من خارج شد )...
    ما همچنین محافظت در برابر خود ادمین ها را اضافه کرده ایم که بدون اینکه به جایی برسند، دزدکی به اطراف می روند و در نتیجه خود را در معرض XSS و تروجان ها قرار می دهند.
    (ج) من

    موتور انجمن را انتخاب کنید. IPB، vBulletin، Phpbb


    موتور فروم یک چیز ضروری برای یک سایت جدی است. این اصل به خوبی شناخته شده است: هر وب سایتی باید تعاملی باشد. راه های زیادی برای دستیابی به تعامل وجود دارد، از نظرات گرفته تا مقالات و شبکه های اجتماعی موضوعی خودتان. انجمن شاید جهانی ترین ابزار برای بازخورد واقعی بازدیدکنندگان باشد.

    انجمن به شما اجازه می دهد:

    یک مخاطب دائمی از کاربران سایت ایجاد کنید که دائماً بازگردند و فعال باشند. فعالیت بازدیدکنندگان پول واقعی است.

    صرفه جویی در محتوا اگر یک انجمن ایجاد کنید، محتوا توسط کاربران ایجاد می شود و مالک نیازی به خرید مقادیر زیادی متن برای تبلیغ ندارد.

    گسترش هسته معنایی سایت. ایجاد یک تالار گفتمان اجازه می دهد تا بدون تلاش زیاد از طرف مالک، تعداد درخواست هایی را که سایت برای آنها تبلیغ می شود، افزایش دهد.

    نصب موتور فروم یک فرآیند ساده است، اما راه اندازی و مدیریت بیشتر می تواند برای یک مبتدی مشکلات زیادی ایجاد کند. با این حال، اسناد زیادی برای هر موتور محبوب وجود دارد، بنابراین اگر بخواهید، می توانید همه چیز را درک کنید. یا یک مدیر حرفه ای استخدام کنید.

    به طور کلی ، اکثریت قریب به اتفاق موتورها برای عملکرد عادی انجمن کاملاً مناسب هستند ، آنها تقریباً مجموعه ای از عملکردهای اساسی را دارند ، از جمله یک سیستم انعطاف پذیر برای تنظیم حقوق دسترسی برای کاربران. آنها در سهولت مدیریت، مجموعه ای از قالب ها و پلاگین ها، قابلیت اطمینان و پشتیبانی فنی از سازنده متفاوت هستند. من بررسی را با سه مورد برتر در Runet شروع می کنم: Phpbb شاید محبوب ترین موتور برای ایجاد یک انجمن در Runet باشد. برای یک مبتدی، مزیت اصلی Phpbb این است که هم خود موتور انجمن و هم انواع افزونه ها رایگان هستند. همچنین بسیاری از جوامع مختلف طرفداران Phpbb، هم در اینترنت روسی زبان و هم در اینترنت خارجی وجود دارد.

    از دیگر مزایای آن می توان به سرعت عمل، سادگی و انعطاف نسبی تنظیمات، تعداد زیاد قالب ها و افزونه ها اشاره کرد. اگر انجمنی را با phpbb بسازید، می توان از آن به عنوان بخشی از سایت استفاده کرد (امکان ادغام با cms های زیادی وجود دارد) اما می توانید یک سایت پرتال کم و بیش کامل نیز بر اساس آن بسازید.

    اما یک اشکال نیز در Phpbb وجود دارد - به شدت در برابر حملات هرزنامه و هک با معرفی کد یک نفر آسیب پذیر است. برای جلوگیری از این امر، باید افزونه های ویژه ای را برای محافظت در برابر هرزنامه ها نصب کنید و همچنین با نصب نسخه های جدید به طور منظم موتور را به روز کنید. افسوس، این همیشه 100٪ محافظت نمی کند، بنابراین باید خودتان یا با تعیین ناظران، این موضوع را به صورت دستی کنترل کنید. می توانید آن را در وب سایت رسمی https://www.phpbb.com/ دانلود کنید

    IPB (Invision Power Board) یک موتور انجمن پولی است که بلافاصله اکثر مبتدیان را می ترساند. با این حال، اگر پروژه در نظر گرفته شده جدی باشد، بعید است که مبلغی در حدود 200 دلار برای IPB یک مدیر وب سایت را متوقف کند. اما ده بار فکر کنید که آیا آماده هستید، حتی به خاطر طیف وسیعی از امکانات، به طور مداوم موتور IPB را برای خود بازسازی کنید، با این خطر که پشتیبانی و به روز رسانی برای خود پیچیده شود.

    این سیستم دارای تعداد زیادی امکانات برای ادغام با سرویس های مختلف - cms های مختلف، وبلاگ ها، چت ها، گالری های عکس و غیره است. شاید بتوان یک پورتال در این موتور را یک وب سایت کاملاً کامل و البته با تنظیمات خاص در نظر گرفت.

    و در اینجا یک پرواز قابل توجه در پماد وجود دارد - موتور IPB به ندرت به روز می شود ، خود کاربران به عنوان آزمایش کننده عمل می کنند که خود آسیب پذیری ها و خطاها را پیدا می کنند. در هر صورت، کد در نهایت "کج" و نابهینه است. هیچ انجمن هواداران روسی با کیفیت بالا وجود ندارد؛ همه مشکلات باید به طور مستقل حل شوند. بومی سازی های روسی نیز به دور از کامل بودن هستند؛ فایل های زبان اغلب برای نمایش عادی باید ویرایش شوند.

    به دلیل پیچیدگی و نادرست بودن کد، انجمن های IPB فقط در فایرفاکس به درستی نمایش داده می شوند؛ در مرورگرهای دیگر ممکن است مشکلات جزئی وجود داشته باشد.

    همچنین ممکن است هنگام ارتقا از نسخه دوم به سوم مشکلی ایجاد شود - ساختار پوسته ها و کلاس ها تغییر کرده است و اگر انجمن اصلاح شده باشد، ارتقاء با مشکل مواجه می شود.

    سیستم قالب IPB بسیار گیج کننده است، تغییر ظاهر آنقدر آسان نیست، شما باید فایل های زیادی را از بین ببرید. طراحی استاندارد بد و کاملاً آشنا نیست - اما استاندارد است، که به خودی خود می تواند برای بسیاری یک نقطه ضعف قابل توجه باشد. می توانید Invision Power Board را از وب سایت رسمی http://www.invisionpower.com/apps/board/ دانلود کنید.
    vBulletin (vb). در بخش روسی زبان اینترنت، vBulletin به طور سنتی "vobla" یا "bun" نامیده می شود. این شاید بهترین موتور انجمن باشد، چیز دیگری برای اضافه کردن وجود ندارد. قیمت حدود 250 دلار (لایسنس برای یک سال خریداری می شود و شامل آپدیت های رایگان در این مدت است) کاملاً موجه است و مطمئناً در صرفه جویی در وقت و اعصاب هزینه های خود را خواهد پرداخت. همه چیز اینجا مانند ساعت کار می کند. کاملاً واضح است که چرا پول گرفته می شود - موتور vBulletin دائماً در حال بهبود است و واضح است که برنامه نویسان حرفه ای و نه فقط طرفداران روی آن کار می کنند.

    فهرست کردن همه توابع فایده ای ندارد - آن (یا افزونه ها) تقریباً هر چیزی را که ممکن است یک مدیر برای ایجاد یک انجمن به آن نیاز داشته باشد، پیاده سازی می کند. استناد چندگانه، پشتیبانی از پادکست، جوامع کاربر، گروه‌های اجتماعی، سیستم شهرت انعطاف‌پذیر و موارد دیگر وجود دارد.

    البته vBulletin دارای تعداد زیادی افزونه و انجمن های کاربری است، بنابراین هیچ مشکلی برای تعمیر و نگهداری وجود نخواهد داشت، به خصوص که یک تیم پشتیبانی رسمی وجود دارد. نقطه ضعف vBulletin، اگرچه خیلی بزرگ نیست، اضافه کردن پولی است، به عنوان مثال، برای وبلاگ های کاربران.

    به طور کلی، انجمن هیچ کاستی ندارد. دقیقاً به دلیل قابلیت اطمینان و مقاومت در برابر انواع حملات می توان آن را برای پروژه های بزرگ و جدی توصیه کرد. در نتیجه، بار قابل توجهی روی سرور ایجاد می کند، به خصوص با افزونه های نصب شده، اما برای پروژه های جدی معمولا از سرورهای جدی و مدیران جدی استفاده می کنند. می توانید آن را در وب سایت رسمی http://www.vbulletin.com/ دانلود کنید

    SMF (انجمن ماشین های ساده). یک موتور ساده که هر مبتدی می تواند از عهده آن برآید. سادگی با کمبود عملکرد جبران می شود، اما همه به مجموعه کاملی از "ترفندها" نیاز ندارند. نصب پلاگین ها (مدها) به راحتی در موتور سازماندهی شده است؛ آنها را می توان مستقیماً از پنل مدیریت دانلود و تنها با چند کلیک نصب کرد.

    پنل اداری تا حدودی غیر معمول است، اما برای یک مبتدی این یک نقطه ضعف نیست، زیرا او هیچ تجربه یا عادتی با موتورهای دیگر ندارد. ناآشنایی به معنای ناراحتی نیست. مزیت دیگر وجود تعداد زیادی مبدل برای تعویض از موتورهای دیگر است.

    انجمن از نظر هک بسیار قابل اعتماد است و اسپم... خب اسپم مشکلی ابدی است که نیاز دارد و می توان با آن مبارزه کرد. علیرغم این واقعیت که SMF رایگان است، توسعه دهندگان و کاربران با تجربه در انجمن رسمی پروژه به همه نیازمندان کمک می کنند.

    بر اساس این موتور همچنین می توانید با استفاده از افزونه های ویژه پورتال ها (Adk Portal، EzPortal و ...) وب سایت های کاملی ایجاد کنید، اما سوال بزرگ این است که آیا ارزش ساخت یک پورتال مبتنی بر یک انجمن را دارد یا خیر. منطقی تر است که یک انجمن به عنوان افزودنی به سایت اصلی در یک موتور تمام عیار ایجاد کنید.

    هیئت هوشمند (IntBoard). یک موتور انجمن برای طرفداران، نوشته شده توسط یک طرفدار و با موفقیت توسط او رها شده است. با این حال، رها کردن دلیلی برای عدم توصیه قاطعانه آن نیست.

    بیایید فوراً در مورد کاستی ها صحبت کنیم. مشکلات اغلب به طور ناگهانی به وجود می آیند، پشتیبانی خوبی وجود ندارد، انجمن رسمی عملاً مرده است و صاحبان انجمن های این موتور به ندرت در آنجا پاسخ می دهند. عملا هیچ افزونه یا قالبی وجود ندارد - شما باید همه کارها را خودتان انجام دهید.

    اما مزایایی هم دارد. کد موتور به اندازه کافی ساده است که حتی یک مبتدی می تواند آن را بفهمد و برخی از مشکلات را به تنهایی برطرف کند و همچنین برخی از عملکردها را برای خود تنظیم کند. موتور بسیار سبک وزن است و بار کمی روی سرور ایجاد می کند. پنل مدیریت بسیار غیر استاندارد است، اما شاید بهترین فرصت برای پیکربندی حقوق برای کاربران باشد. سیستمی از گروه ها و حقوق دسترسی به هر بخش خاص به شما این امکان را می دهد که یک سیستم تعدیل قدرتمند و مؤثر ایجاد کنید.

    PunBB. یک موتور ساده و سبک با یک جامعه نسبتاً قدرتمند که به حل مشکلات پیش آمده کمک می کند. بدون نیاز به منابع سرور پنل اداری بصری است.

    این طرح با استفاده از CSS ساخته شده است، بنابراین مبتدیانی که به چیدمان جدول عادت دارند، ویرایش قالب ها را غیرعادی می دانند. با این حال، این نیز یک مزیت است - وقت آن است که بر فناوری های مدرن تسلط پیدا کنید.

    یک اشکال جدی در دسترس بودن زیاد برای هرزنامه است - علاوه بر پلاگین های نصب شده، باید این مورد را به صورت دستی نظارت کنید.

    ExBB یک موتور رایگان است که ویژگی آن این است که با پایگاه داده های متنی بدون استفاده از MySQL کار می کند. شاید 10 سال پیش این یک مزیت بود - چنین سایت هایی بار کمتری ایجاد می کردند و میزبانی با پشتیبانی از پایگاه داده بسیار گران تر بود. امروزه هر میزبانی از MySQL پشتیبانی می کند و پایگاه داده های متنی یک نقطه ضعف هستند. آنها بسیار کندتر و کمتر قابل اعتماد هستند.

    با این حال، می توانید با استفاده از این cms برای یک سایت کوچک که در آن هجوم زیادی از بازدیدکنندگان و پیام ها انتظار نمی رود، یک انجمن ایجاد کنید. نصب آن آسان است، نگهداری آن آسان است و تعداد زیادی کاربر و یک انجمن پشتیبانی در وب سایت رسمی دارد.

    وانیل – این موتور کمتر شناخته شده به عنوان مکمل وردپرس، یکی از محبوب ترین cms قرار گرفته است. در بین امکانات استاندارد وردپرس امکان ایجاد انجمن وجود ندارد. البته، شما می توانید هر موتور فروم را تطبیق دهید، اما به همین راحتی نیست. Vanilla مانند یک پلاگین معمولی نصب شده است.

    سیستم پیام های شخصی به روشی غیرعادی پیاده سازی شده است - آنها مانند موضوعات معمولی منتشر می شوند، اما فقط برای کسانی که مخاطب آنها هستند قابل مشاهده است. در هر موضوعی، علاوه بر عمومی، می توانید پیام شخصی بگذارید. غیر معمول، اما کاملا راحت است. به طور کلی، به نظر می رسد که توسعه دهندگان تصمیم به ایجاد یک انجمن بر خلاف بقیه دارند. این که این یک مثبت یا منفی است به شما بستگی دارد که تصمیم بگیرید.

    به طور کلی، موتورهای زیادی وجود دارد - می توانید امتحان کنید، می توانید بلافاصله در مورد چیزی محبوب حل و فصل کنید، حتی می توانید چیزی از خودتان بنویسید یا سفارش دهید. نمی توان بدون ابهام گفت که کدام گزینه برای هر مورد خاص بهینه خواهد بود.

    مدیریت چنین خدماتی معمولاً مسئولیتی در قبال هیچ چیزی ندارد، بنابراین اگر انجمن شما در لحظه ای شگفت انگیز ناپدید شود، در بهترین حالت عذرخواهی خواهند کرد.

    در مقاله بعدی به شما خواهم گفت که چه چیزی وجود دارد

    من مسئول چندین VPS هستم که روی آن‌ها می‌چرخند... عموماً حوزه مسئولیت من نیست، و بنابراین آنچه در آنجا می‌چرخد، سرعتش کم می‌شود، متوسط ​​کار می‌کند. و معلوم شد که یک فروم خاص روی یکی از آنها در حال اجرا است و فروم شروع به کند شدن کرد. و میخواستم بفهممش...

    منبع
    • انجمن برای vBulletin 3.8.x
    • به زیر دامنه forum.domain.com منتقل شد
    • Nginx 1.1.13، php 5.3.x (fpm)
    • به غیر از انجمن، هیچ چیز در این سرور در حال اجرا نیست. ( مهم است).
    • Mysql در سرور جداگانه، ارتباط از طریق TCP/IP.
    زمینه
    من برای خودم در انجمن زندگی کردم، مزاحم نشدم، نشان دادم xm topبار حدود 30-40 درصد است. و سپس ساعت "X" فرا رسید و بار به یک فلات مسطح 90 درصد با قله‌های بالاتر پرید، که به طور کلی وزوز نمی‌کند. مشکوک بودن DDOS تایید نشد. گزارش‌ها حجم کار عادی را نشان می‌داد. خوب، قبل از افزایش احمقانه منابع، این ایده به وجود آمد که بفهمیم چه اتفاقی در حال رخ دادن است و سعی کنیم هر چیزی را که ممکن است ذخیره کنیم.
    تحقیق و بررسی. بخش اول - یک بازدید کننده زن چه می خواهد؟
    از آنجایی که من با ایدئولوژی و ویژگی های این نرم افزار آشنایی نداشتم، با تجزیه و تحلیل گزارش ها و ترافیک بین بازدیدکنندگان و سرور شروع به مطالعه مشکل کردم. اول از همه، من متعجب شدم که متوجه شدم پیوست‌های پیام‌های موجود در انجمن منحصراً توسط اسکریپت ارائه می‌شوند. attachment.php، در حالی که خود فایل ها را می توان در پایگاه داده یا روی یک دیسک محلی ذخیره کرد، اما بازگشت فقط از طریق یک اسکریپت است. و دیگر هیچ. یعنی 8-10 پیچ اضافی از مفسر PHP در هر رشته پیام با 8-10 عکس دریافت می کنیم. و این برای هر بازدید کننده است. از آنجایی که برای مشاهده پیوست‌ها نیازی به ثبت نام در این انجمن نیست، پیوست‌ها می‌توانند مثلاً چند روز در حافظه پنهان شوند. چیزی شبیه به این:
    مکان = //tachment.php (حداکثر منقضی می‌شود؛ منطقه limit_req = lim_req_1s_zone burst = 5؛ Fastcgi_pass forum__php_cluster؛ شامل /intentc /fastcgi_params؛ شامل /etc/nginx/fastcgi_params_php-fpm؛ fastcgi_params_php-fpm؛ fastcgi_params_php-fpm؛ fast_cacheum ires set-cookie ; fastcgi_hide_header Set -کوکی؛ fastcgi_hide_header پراگما؛ fastcgi_cache_key "$request_method:$http_if_modified_since:$http_if_none_match:$host:$request_uri:"؛ fastcgi_cache_use_stale زمان خطای به‌روزرسانی سریع invalid_header httpc_500; fastcgi_cache_valid 2d; ) و جایی در بخش http اعلام کنید forum_att__cache : fastcgi_cache_path /var/cache/nginx/att level=1:2 keys_zone=forum_att__cache:4m max_size=2g inactive=2d;

    دومین "مکاشفه" برای من این بود که آرشیوهایی در انجمن وجود دارد و آنها نه تنها وجود دارند، بلکه تقریباً نیمی از درخواست ها از آنها می آید. ظاهر صفحات همچنین اجازه می دهد تا محتوای آنها در کش ذخیره شود:
    مکان /بایگانی/ ( 10 روز منقضی می‌شود؛ منطقه limit_req=lim_req_1s_zone burst=2؛ مکان ~ \.css$ ( حداکثر منقضی می‌شود؛ ) fastcgi_pass forum__php_cluster؛ fastcgi_index index.php؛ شامل /etc/nginx/fastcgi_params/params/fastcgi_params_png_inx; -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-Controle_keyers request_method :$http_if_modified_since:$http_if_none_match:$host: $request_uri:"؛ fastcgi_cache_use_stale خطای به‌روزرسانی زمان‌بندی invalid_header http_500؛ fastcgi_cache_valid 2d; ) و به بخش http: fastcgi_cache_path /var/cache/nginx/arc level=1:2 keys_zone=forum_arc_dg; در عین حال، بیایید از خود در برابر حملات DDOS محافظت کنیم: limit_req_zone "$psUID" zone=lim_req_1s_zone:2m rate=1r/s;
    بعداً در مورد شکل گیری کلید "$psUID" به شما خواهم گفت.

    تحقیق و بررسی. بخش دوم - مجوز در vBulletin
    از دیدگاه یک بازدیدکننده انجمن، یک بازدیدکننده می تواند کاربر ثبت نام شده یا مهمان باشد. اما وضعیت کاملاً متفاوتی ایجاد می شود اگر از نقطه نظر ظاهر شدن و ناپدید شدن کوکی ها در مرورگر وضعیت "آمد، راه افتاد، وارد شد، راه رفت، از سیستم خارج شد، راه افتاد" را مشاهده کنیم. بنابراین، کوکی‌های دامنه و زیر دامنه‌های آن را پاک کنید، HTTPfox را باز کنید و ببینید چه اتفاقی می‌افتد:
    HTTP/1.1 200 OK Set-Cookie: PHPSESSID=cdme9rrptft67tbo97p4t1cua5; انقضا=چهارشنبه، 22 فوریه 2012، 15:04:12 GMT; مسیر=/; domain=.domain.com مجموعه کوکی: bblastvisit=1329059052; انقضا=Mon, 11-Feb-2013, 15:04:12 GMT; مسیر=/; domain=.domain.com Set-Cookie: bblastactivity=0; انقضا=Mon, 11-Feb-2013, 15:04:12 GMT; مسیر=/; domain=.domain.com Set-Cookie: uid=XCuiGU831OyC8VLqAx/QAg==; انقضا=پنجشنبه، 31-دسامبر-37، 23:55:55 GMT; domain=.domain.com; مسیر=/
    با uidو PHPSESSIDهمه چیز واضح است - اینها ماشینکاری های nginx و مفسر php با گزینه نصب شده است session.auto_start، اما بقیه نظارت بر فعالیت در انجمن هستند. اما کوکی جلسه اصلی vBulletin هنوز مشاهده نشده است. با نگاهی به آینده، من می گویم که vBulletin از یک جلسه استاندارد PHP استفاده نمی کند (به طور دقیق تر، ALMOST از آن استفاده نمی کند)، اما خود را حفظ می کند، شناسه آن در یک کوکی ذخیره می شود. 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=85745bc6110db5221e159087bf037f24; مسیر=/; domain=.domain.com; HttpOnly
    پس از ورود، جلسه "پایدار" است و هیچ جهشی با پیوندها وجود ندارد. روال خروج تفاوتی ندارد - همه کوکی‌های انجمن موجود حذف می‌شوند (حتی آنهایی که تنظیم نشده‌اند) و کوکی یک جلسه جدید ("ناشناس") نوشته می‌شود:
    HTTP/1.1 200 OK Set-Cookie: bbsessionhash=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bblastvisit=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bblastactivity=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbthread_lastview=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbreferrerid=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbuserid=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbpassword=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbthreadedmode=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbstyleid=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bblanguageid=deleted; انقضا=پنجشنبه، 01-ژانويه-1970 00:00:01 GMT; مسیر=/; domain=.domain.com Set-Cookie: bbsessionhash=3d0bdc5dbe8dabae361deebe8f6048d2; مسیر=/; domain=.domain.com; HttpOnly
    یعنی در خروجی یک شخص ناشناس (مهمان) می گیریم اما صد در صد با یک جلسه.
    در نتیجه از نظر نرم افزار انجمن وهدرهای HTTP ما سه نوع کاربر داریم: مهمان بدون جلسه, مهمان با جلسه, بازدید کننده وارد شده است. علاوه بر این، در سطح nginx، تشخیص دوم از سوم بسیار مشکل ساز است.

    اکنون، با درک اینکه کدام کوکی ها و چگونه بین بازدید کننده و سرور حرکت می کنند، می توانید به موضوع ذخیره محتوای پویا نزدیک شوید. همانطور که می دانید، قابلیت ذخیره پاسخ ها از backend fastcgi در nginx در ماژول ngx_http_fastcgi_module تعبیه شده است. برای انجام این کار، باید یک منطقه کش به صورت سراسری در قسمت http و یک کلید در محل مورد نظر ثبت کنید و اگر برای محتوای ثابت شرطی (تصاویر، آرشیوها) کلید ذخیره سازی را می توان یک URI با اضافات جزئی در نظر گرفت، پس برای دینامیک کش نیز باید کاربر و کاربر را در نظر بگیرید
    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 را ارائه می دهند. با کمک آن، می توانید یک انجمن کاملاً کارآمد با تمام عملکردهای اداری، دور زدن مراحل دانلود، نصب و پیکربندی موتور دریافت کنید. اساساً، پس از خرید یک طرح، تنها کاری که باید انجام دهید این است که قبل از راه‌اندازی بازدیدکنندگان، سایت را مطابق با نیازهای خود سفارشی کنید.

    طرح

    در وب سایت رسمی موتور می توانید تم ها را برای طراحی اولیه دانلود کنید. آنها به راحتی در سایت نصب می شوند و می توان آنها را مطابق میل مدیر وب سایت تغییر داد. برای مدیریت استایل ها، قسمت Advertising در پنل مدیریتی وجود دارد. در آن می توانید:

    • پس زمینه سایت را تغییر دهید یا اضافه کنید.
    • به جای پس زمینه یک تصویر اضافه کنید.
    • ویرایش فایل سبک

    تغییرات اساسی را می توان از طریق سازنده ایجاد کرد. به عنوان مثال برای تغییر لوگو باید تب Header را باز کرده و فایل مربوطه را آپلود کنید. در تب نوار پیمایش، می توانید منوی اصلی سایت را مدیریت کنید: پیوندها را به صفحات دیگر اضافه و حذف کنید، ترتیب آنها را تغییر دهید، نام ها را اختصاص دهید.

    این به مهارت های برنامه نویسی نیاز ندارد، یعنی حتی یک وب مستر تازه کار که هرگز با موتورهای انجمن کار نکرده است، می تواند تنظیمات ظاهری اولیه را انجام دهد.

    بهینه سازی موتورهای جستجو (SEO)

    CMS vBulletin ماژول خاصی برای بهینه سازی موتور جستجو ندارد. با این حال، این بدان معنا نیست که نیازی به کار در انجمن نیست. سایت ها مشروط به داشتن تگ H1 هستند که برای تعیین موضوع صفحه برای ربات استفاده می شود. برای تنظیم نمایه سازی، باید فایل robots.txt را ویرایش کنید - نکاتی در مورد نحوه قالب بندی صحیح آن را می توانید در انجمن های اختصاص داده شده به سایت ها در vBulletin پیدا کنید.

    بهینه سازی موتورهای جستجو تا حد زیادی با فعال یا غیرفعال کردن عملکردهای فردی مرتبط است. به عنوان مثال، برای ذخیره کد، باید منوی پرش را غیرفعال کنید. چنین چیزهای کوچک زیادی وجود دارد، شما فقط می توانید آنها را در انجمن های تخصصی پیدا کنید - چیزی شبیه به آن در راهنمای vBulletin وجود ندارد.

    افزونه های سئو برای افزودن ویژگی های جدید در دسترس هستند. معروف ترین آنها VBSEO است. با کمک آن، می توانید انجمن را برای برآورده کردن نیازهای موتورهای جستجو بهینه کنید: تغییر مسیرها را تنظیم کنید، موارد تکراری را حذف کنید، و صفحات جداگانه را از فهرست بندی حذف کنید. نقطه ضعف اصلی این است که VBSEO بار اضافی روی سرور ایجاد می کند که در حال حاضر برای یک CMS بسیار بزرگ است.

    نرخ ها

    یک مجوز مادام العمر با به روز رسانی سالانه 250 دلار هزینه خواهد داشت. با این پول تمام ویژگی های موتور موجود است:

    • برنامه های داخلی: انجمن، گروه ها، نظرسنجی ها، وبلاگ.
    • ابزارهای بهینه سازی موتورهای جستجو
    • پشتیبانی حرفه ای
    • تنظیمات رابط انعطاف پذیر
    • پانل های کنترل برای همه شرکت کنندگان: مدیر، مدیر، کاربر.
    • ابزارهای مدیریت کاربر

    250 دلار قیمت نهایی نیست. با این پول فقط حق استفاده از موتور مادام العمر را خریداری می کنید.

    • برای ادامه دریافت به‌روزرسانی‌ها، باید هر سال 209 دلار بپردازید. توسعه دهندگان افزونه های پولی را نیز ارائه می دهند:
    • حذف نام تجاری فوتر از کل سایت شما یک بار هزینه 169 دلاری دارد.
    • پشتیبانی تلفن یا بلیط اضافی 49 دلار در ماه یا 329 دلار در سال است.
    • نصب حرفه ای یا ارتقاء موتور - یک بار هزینه 149 دلار.

    اگر می خواهید تالار گفتمان در صفحه نمایش های کوچکتر خوب به نظر برسد، می توانید بسته موبایل را خریداری کنید. هزینه مجوز 399 دلار و تمدید سالانه 359 دلار هزینه خواهد داشت. قیمت نسخه موبایل به صورت جداگانه ۱۹۹ دلار است. بدون آن، انجمن معمولاً فقط در رایانه قابل استفاده است.

    هنگام انتخاب vBulletin Cloud، سه طرح موجود است: برنز، نقره و طلا. همه آنها ارائه می دهند:

    • به روز رسانی خودکار به آخرین نسخه سیستم.
    • استفاده از سرورهای بهینه شده برای vBulletin.
    • فضای دیسک موجود را متناسب با نیاز خود تغییر دهید.
    • ایجاد خودکار پشتیبان گیری

    حداقل طرح 19.95 دلار در ماه هزینه دارد (14.99 دلار در صورت پرداخت سالانه). پهنای باند 25 گیگابایتی، پشتیبانی رایگان و دامنه رایگان را ارائه می دهد. این یک راه حل عالی برای انجمن های کوچک با ترافیک کم است.

    نقره اکنون 39.95 دلار در ماه هزینه دارد (29.99 دلار در صورت پرداخت سالانه) و 75 گیگابایت پهنای باند و همچنین از طریق سیستم بلیط پشتیبانی می کند. این طرح برای جوامع رو به رشد با ترافیک متوسط ​​مناسب است.

    بالاترین طرح طلا به قیمت 74.95 دلار در ماه (59.99 دلار در صورت صورتحساب سالانه) است. 200 گیگابایت پهنای باند، پشتیبانی تلفنی رایگان. راه حل بهینه برای انجمن های بزرگ.

    مزایا و معایب

    VBulletin برای مدت زمان طولانی وجود داشته است، بنابراین دارای یک جامعه کاربری توسعه یافته، اسناد دقیق و بسیاری از مواد مرتبط است: تم ها، قالب ها، برنامه های افزودنی. از دیگر مزایایی که ذکر می کنیم:

    • تعداد زیادی تم طراحی.
    • امکان گسترش عملکرد با نصب افزونه ها و ماژول هایی که در حال حاضر بیش از 1000 مورد از آنها وجود دارد.
    • ابزارهای ساده برای تولید محتوا و مدیریت وب سایت.
    • سفارشی سازی طراحی ساده
    • انتشار سریع عکس و فیلم توسط کاربران.
    • هنگام خرید بسته مناسب برای دستگاه های تلفن همراه بهینه شده است.

    اگر قبلاً از موتور انجمن دیگری استفاده کرده اید، مدت زیادی طول می کشد تا به پنل مدیریتی VBulletin عادت کنید. بد نیست - فقط غیر معمول و در برخی لحظات ناخوشایند است.

    VBulletin همیشه بار سرور بالایی داشته است، مخصوصاً هنگام نصب چندین افزونه. این مورد باید در انتخاب هاست در نظر گرفته شود و در بودجه گنجانده شود تا پلن با قدرت بیشتری خریداری شود. هزینه ها بسیار زیاد است و شما قطعاً نمی توانید در پول خود صرفه جویی کنید - این واقعیت را به خطر می اندازد که در صورت هجوم بازدیدکنندگان انجمن "سقوط" کند.

    پس از تغییر تیم توسعه، سوالات زیادی در مورد ایمنی موتور به وجود می آید. پایدارترین نسخه 3.8 باقی می ماند. نسخه‌های چهارم و پنجم دائماً به‌روزرسانی‌های امنیتی را دریافت می‌کنند که نشان می‌دهد توسعه‌دهندگان پس از عرضه محصول، حفره‌هایی را اصلاح می‌کنند.

    احتمالا بارها تالارهای گفتگوی موتور vBulletin را دیده اید. انجمن ها به این عنوان دیگر مد نیستند، اما vBulletin هنوز یکی از محبوب ترین موتورها است. در آخرین نسخه (پنجم) آن، چندین آسیب پذیری یافت شد که می تواند زندگی یک مدیر را تا حد زیادی خراب کند. در این مقاله نحوه استفاده از آنها را به شما خواهم گفت.

    اولین مشکل فیلتر نادرست اطلاعات کاربر است. این توسط یک محقق امنیتی مستقل که مایل بود ناشناس بماند گزارش شده است. این آسیب‌پذیری، اگرچه محدودیت‌هایی دارد، اما وضعیت بحرانی را دریافت کرده است زیرا به شما امکان می‌دهد هر فایلی را بخوانید و کد دلخواه را در سیستم هدف اجرا کنید.

    دومین آسیب پذیری توسط محققان TRUEL IT پیدا شد و شناسه CVE-2017-17672 را دریافت کرد. این مربوط به ویژگی های deserialization داده ها در موتور است و می تواند توسط یک مهاجم برای حذف فایل های دلخواه در سیستم استفاده شود.

    گزارش‌های کاملی که جزئیات هر دو موضوع را به‌عنوان بخشی از برنامه Beyond Security SecuriTeam منتشر کرده‌اند. همچنین اکسپلویت های PoC برای نشان دادن آسیب پذیری ها وجود دارد. بیایید همه اینها را به ترتیب مرور کنیم.

    آماده سازی

    من از توزیع WAMP به عنوان سرور استفاده کردم.

    خواندن فایل ها، اجرای دستورات

    بنابراین، دلیل آسیب‌پذیری اول، منطق نادرست هنگام پردازش پارامتر مسیریابی است که به مهاجم اجازه می‌دهد تا هر فایلی را روی دیسک از طریق شامل و اجرای کد PHP موجود در آن قرار دهد.

    مسیر ما با مهمترین فایل - index.php آغاز می شود، جایی که اولیه سازی اولیه برنامه انجام می شود.

    /index.php
    48: $app = vB5_Frontend_Application::init("config.php"); ... 60: $routing = $app->getRouter(); 61: $method = $routing->getAction(); 62: $template = $routing->getTemplate(); 63: $class = $routing->getControllerClass();

    بیایید به روش vB5_Frontend_Application::init نگاه کنیم.

    /includes/vb5/frontend/application.php
    13: کلاس vB5_Frontend_Application گسترش می یابد vB5_ApplicationAbstract 14: ( 15: عمومی تابع استاتیک init ($configFile) 16: ( 17: والد::init ($configFile); 18: 19: self::$instance = new vB_2:Front; self::$instance->router = new vB5_Frontend_Routing();21: self::$instance->router->setRoutes();

    در اینجا ما به روش setRoutes علاقه مند هستیم.

    47: تابع عمومی setRoutes() 48: ( 49: $this->processQueryString()؛ ... 54: if (isset($_GET["routestring"])) 55: ( 56: $path = $_GET[" مسیریابی"]؛

    متغیر مسیر $ حاوی مقدار داده‌های کاربر از پارامتر مسیریابی است. شما می توانید مسیر صفحه انجمن را به آن منتقل کنید و بارگذاری می شود.



    فرض کنید ما /test را قبول کردیم.

    پس از تخصیص یک متغیر، یک کد وجود دارد که در صورت وجود، از شر اسلش در ابتدای خط خلاص می شود.

    /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") یا ($ext == ".css") 87: OR (strtolower(substr($path, -3)) == ".js" )) 88: ( 89: سرصفحه ("HTTP/1.0 404 یافت نشد")؛ 90: مرگ ("")؛ 91: ) 92: )

    همانطور که می بینید، چک بسیار عجیب است. حداقل، وجود لیستی از پسوندهای ممنوعه که مستقیماً در کد نوشته شده است گیج کننده است. و به طور کلی خود این واقعیت که پسوند با برش چهار کاراکتر از انتهای خط (خط 85) به دست می آید، گیج کننده است. به طور کلی، اگر بخواهیم فایلی با پسوندهای gif، png، jsp، css یا js دریافت کنیم، سرور یک صفحه 404 را برمی گرداند و اسکریپت اجرا نمی شود. هنگامی که همه بررسی ها پاس می شوند، متد getRoute از کلاس vB_Api_Route با استفاده از callApi فراخوانی می شود. مسیرهای مناسب را بر اساس اطلاعات ارائه شده توسط کاربر جستجو می کند.

    ادامه فقط برای اعضا در دسترس است

    گزینه 1. برای خواندن تمام مطالب موجود در سایت به انجمن "سایت" بپیوندید

    عضویت در انجمن در مدت زمان مشخص شده به شما امکان دسترسی به تمام مطالب هکرها را می دهد، تخفیف تجمعی شخصی شما را افزایش می دهد و به شما امکان می دهد امتیاز حرفه ای Xakep را جمع آوری کنید!