# راهنمای امنیتی ویرایشگر فارسی

این سند راهنمای امنیتی برای استفاده از ویرایشگر فارسی در پروژه‌های جنگو است. رعایت این نکات امنیتی برای محافظت از کاربران و داده‌های آن‌ها ضروری است.

## مقدمه

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

## تهدیدات امنیتی رایج

### 1. حملات XSS (Cross-Site Scripting)

ویرایشگر فارسی به طور پیش‌فرض از مکانیزم‌های پاکسازی HTML برای جلوگیری از حملات XSS استفاده می‌کند. با این حال، توسعه‌دهندگان باید اطمینان حاصل کنند که:

- همیشه از تابع `clean_html` برای پاکسازی محتوای HTML استفاده کنند.
- هرگز محتوای خام را بدون پاکسازی در صفحات وب نمایش ندهند.
- از هدرهای امنیتی مانند Content-Security-Policy استفاده کنند.

### 2. آپلود فایل‌های مخرب

ویرایشگر فارسی امکان آپلود تصاویر را فراهم می‌کند. برای جلوگیری از آپلود فایل‌های مخرب:

- همیشه از تابع `validate_image_file` برای بررسی فایل‌های آپلود شده استفاده کنید.
- محدودیت اندازه فایل را تنظیم کنید.
- فقط انواع فایل‌های مجاز را اجازه دهید.
- فایل‌ها را در مسیری خارج از دسترس مستقیم وب ذخیره کنید.

### 3. حملات CSRF (Cross-Site Request Forgery)

برای محافظت در برابر حملات CSRF:

- همیشه از دکوراتور `@csrf_protect` در نمای‌های جنگو استفاده کنید.
- توکن CSRF را در تمام درخواست‌های AJAX ارسال کنید.
- از میدل‌ور `CsrfViewMiddleware` جنگو استفاده کنید.

### 4. حملات Clickjacking

برای محافظت در برابر حملات Clickjacking:

- از هدر `X-Frame-Options` استفاده کنید.
- از میدل‌ور `SecurityHeadersMiddleware` استفاده کنید.

## پیکربندی امن

### 1. تنظیمات امنیتی جنگو

اطمینان حاصل کنید که تنظیمات امنیتی زیر در فایل `settings.py` پروژه جنگو فعال باشند:

```python
# تنظیمات امنیتی
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'
CSRF_COOKIE_SECURE = True  # در محیط تولید
SESSION_COOKIE_SECURE = True  # در محیط تولید
SECURE_SSL_REDIRECT = True  # در محیط تولید
SECURE_HSTS_SECONDS = 31536000  # در محیط تولید
SECURE_HSTS_INCLUDE_SUBDOMAINS = True  # در محیط تولید
SECURE_HSTS_PRELOAD = True  # در محیط تولید
```

### 2. میدل‌ورهای امنیتی

اضافه کردن میدل‌ور امنیتی به پروژه:

```python
MIDDLEWARE = [
    # ...
    'persian_editor.middleware.SecurityHeadersMiddleware',
    # ...
]
```

### 3. تنظیمات آپلود فایل

تنظیمات امن برای آپلود فایل:

```python
# تنظیمات آپلود فایل
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# محدودیت اندازه فایل (5 مگابایت)
FILE_UPLOAD_MAX_MEMORY_SIZE = 5 * 1024 * 1024
```

## بهترین شیوه‌های امنیتی

### 1. به‌روزرسانی منظم

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

### 2. محدود کردن دسترسی

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

### 3. لاگ کردن

فعالیت‌های مشکوک را لاگ کنید تا بتوانید حملات احتمالی را شناسایی کنید.

### 4. بررسی امنیتی منظم

به طور منظم کد خود را از نظر مشکلات امنیتی بررسی کنید.

## گزارش آسیب‌پذیری‌های امنیتی

اگر آسیب‌پذیری امنیتی در ویرایشگر فارسی پیدا کردید، لطفاً آن را به آدرس ایمیل [security@example.com](mailto:security@example.com) گزارش دهید.

## منابع بیشتر

- [راهنمای امنیتی جنگو](https://docs.djangoproject.com/en/stable/topics/security/)
- [OWASP Top Ten](https://owasp.org/www-project-top-ten/)
- [راهنمای امنیتی HTML5](https://html5sec.org/)
