# VPNet Panel - تاریخچه تغییرات

## نسخه اصلاح‌شده (Final)

### 🔴 امنیت - بحرانی
- **CSRF Protection**: توکن CSRF در تمام فرم‌های POST در ۱۸+ ماژول و ۱۱+ ویجت اضافه شد
- **Session Security**: `session_regenerate_id(true)` بعد از لاگین برای جلوگیری از Session Fixation
- **SQL Injection**: باگ SQL Injection در `backup.php` و `banks.php` با Prepared Statements رفع شد
- **SSRF**: اعتبارسنجی URL در `store.php` - جلوگیری از دسترسی به آدرس‌های داخلی شبکه
- **SSL/TLS**: `CURLOPT_SSL_VERIFYPEER` در تمام curl در پروژه فعال شد
- **view_config.php**: دسترسی با توکن HMAC امضادار محافظت شد
- **Rate Limiting**: محدودیت ۵ تلاش لاگین با قفل ۱۰ دقیقه‌ای
- **Security Headers**: `X-Frame-Options`, `X-Content-Type-Options`, `X-XSS-Protection`, `Referrer-Policy`
- **Cookie Security**: `httponly=true`, `samesite=Strict`, `secure` در HTTPS

### 🟠 امنیت - متوسط  
- **File Upload**: بررسی MIME واقعی فایل (نه فقط پسوند) + محدودیت ۵MB در billing.php
- **File Upload**: محدودیت حجم ۵MB در tickets.php و wallet.php
- **DELETE via GET**: تبدیل حذف تراکنش از GET به POST
- **Error Leaking**: خطاهای PDO در search_ajax.php و tickets.php دیگر به کاربر نمایش داده نمی‌شود
- **Negative Discount**: تخفیف منفی با `max(0, ...)` جلوگیری می‌شود
- **Password Strength**: حداقل طول رمز از ۶ به ۸ کاراکتر افزایش یافت
- **notifications_api.php**: `checkLogin()` اضافه شد

### 🟡 باگ‌های عملکردی
- **billing.php footer**: مجموع ستون بدهی در footer جدول گزارش از ۰ ثابت به محاسبه واقعی تغییر کرد
- **settings.php redirect**: آدرس ریدایرکت نادرست برای غیر ادمین‌ها اصلاح شد
- **robots.txt.txt**: نام فایل از `robots.txt.txt` به `robots.txt` اصلاح شد
- **Input Validation**: بررسی حجم (volume > 0) و فرمت تاریخ شمسی در ثبت تراکنش
- **DB Transactions**: عملیات settlement (ثبت، تایید، رد) اتمیک با `beginTransaction/commit/rollBack`

### 🟢 بهبود عملکرد
- **Database Indexes**: فایل `config/DATABASE_INDEXES.sql` با ایندکس‌های بهینه برای تمام جداول کلیدی
- **Pagination**: صفحه‌بندی ۵۰ تراکنش در صفحه تراکنش‌ها
- **Backup Locking**: قفل فایل در `auto_backup_runner.php` برای جلوگیری از اجرای همزمان
- **db.php**: تنظیم `utf8mb4_unicode_ci` و آماده‌سازی برای persistent connections

### 🔵 ویژگی جدید
- **Secure Customer Link**: تابع `buildViewConfigUrl()` برای ساخت لینک امن صفحه مشتری با توکن HMAC
- **🔗 صفحه مشتری**: دکمه لینک امن در transactions.php، subscriptions، inventory و store
- **.htaccess**: محافظت از پوشه‌های config/ و backups/ از دسترسی مستقیم

### 📋 راهنمای نصب
1. فایل‌ها را در `C:\xampp\htdocs\vpnet-panel\` کپی کنید
2. کوئری‌های `config/DATABASE_INDEXES.sql` را در phpMyAdmin اجرا کنید
3. رمز `VPNET_VIEW_SECRET` را در `modules/view_config.php` به یک مقدار اختصاصی تغییر دهید
4. در محیط production، `config/db.php` را با اطلاعات واقعی دیتابیس تنظیم کنید
