مرحله دوم — احراز هویت و اتصال دستگاه

پیش‌نیاز:
- PHP 8.2 با افزونه‌های PDO و pdo_mysql و Argon2id
- دیتابیس MySQL ساخته‌شده در cPanel
- مسیر سایت: /home/magsyste/public_html/photo-v2/
- مسیر خصوصی: /home/magsyste/private_chat_app/

۱) از public_html/photo-v2 یک نسخه پشتیبان بگیر.
۲) محتوای پوشه photo-v2 این ZIP را در مسیر فعلی photo-v2 آپلود کن.
۳) چون index.html قدیمی ممکن است قبل از index.php اجرا شود، آن را به index-stage1-backup.html تغییر نام بده.
۴) پوشه private_chat_app را در /home/magsyste/ آپلود کن.
۵) فایل config.example.php را به config.php تغییر نام بده.
۶) در config.php:
   - رمز دیتابیس را فقط در همین فایل روی هاست وارد کن؛ آن را در چت نفرست.
   - app_key را با یک رشته تصادفی حداقل ۶۴ کاراکتری جایگزین کن.
   - install_key را با یک رشته تصادفی طولانی و متفاوت جایگزین کن.
   - install_enabled فعلاً true بماند.
۷) مطمئن شو پوشه private_chat_storage بیرون public_html است و PHP اجازه نوشتن در آن را دارد.
۸) آدرس https://YOUR-DOMAIN/photo-v2/install/ را باز کن.
۹) کلید نصب و رمزهای جدید حساب‌ها را وارد کن. رمزهای کوتاه قبلی را توصیه نمی‌کنیم؛ حداقل ۱۲ کاراکتر و غیرقابل حدس انتخاب کن.
۱۰) کد بازیابی جداگانه هر حساب را ذخیره کن؛ فقط یک‌بار نمایش داده می‌شود.
۱۱) بلافاصله install_enabled را false کن و پوشه public_html/photo-v2/install را حذف کن.
۱۲) ورود را از صفحه اصلی تست کن.

ملاحظات امنیتی:
- به دلیل افشای رمز دیتابیس در گفتگو، توصیه می‌شود قبل از استفاده واقعی رمز دیتابیس را در cPanel عوض کنید. این بسته آن رمز را داخل هیچ فایلی قرار نداده است.
- کد بازیابی مشترک 8188 عمداً استفاده نشده؛ کد بازیابی تصادفی و اختصاصی برای هر حساب تولید می‌شود و پس از یک‌بار استفاده باطل می‌شود.
- دستگاه با کوکی تصادفی ۲۵۶ بیتی HttpOnly/SameSite و هش HMAC در دیتابیس شناخته می‌شود؛ Fingerprinting سخت‌افزاری انجام نمی‌شود.
- خروج عادی فقط نشست ورود را می‌بندد و کوکی ثبت دستگاه را نگه می‌دارد؛ بنابراین همان مرورگر می‌تواند دوباره وارد شود. بازیابی دستگاه فقط برای مرورگر جدید است.
- این نسخه فقط هسته ورود و ثبت دستگاه است؛ پیام‌رسان هنوز ساخته نشده.
- HTTPS را در cPanel فعال کنید و سایت را فقط با https باز کنید.
