سیستم مستندات یکپارچه

Backend Core - Security

امنیت

این بخش فقط لیست فایل نیست؛ کنترل‌های امنیتی قابل مشاهده از روی dependencyها، routeها و فایل‌های auth/permission/guard/secret تحلیل شده‌اند. هرجا شواهد کافی نبوده، وضعیت نیازمند بررسی انسانی باقی مانده است.

کنترل‌های امنیتی شناسایی‌شده

کنترلوضعیتتوضیحشاهد
JWT / Token Authenticationشاهد مستقیم پیدا شدپروژه از token یا guard مرتبط با JWT برای شناسایی کاربر و محافظت از routeها استفاده می‌کند.dependency یا فایل‌های jwt/auth
Authorization / RBACشاهد مستقیم پیدا شدفایل‌های permission، role یا guard نشان می‌دهند که دسترسی فقط بر اساس login نیست و سطح مجوز هم بررسی می‌شود.permission/role/guard files
OTP Verificationشاهد مستقیم پیدا شدمسیرها یا فایل‌های OTP برای تایید شماره یا عملیات حساس وجود دارد.OTP endpoints/files
Secret Handling / Maskingشاهد مستقیم پیدا شدنام فایل‌ها به masking، secret یا encryption اشاره دارند؛ مستندات فقط ساختار را ثبت می‌کند و مقدار واقعی secret را نمایش نمی‌دهد.masking/secret/encryption files
CORS Policyشاهد dependency/fileCORS در سطح runtime قابل تنظیم است و باید در محیط production محدود شود.cors dependency/files

جریان امنیتی درخواست

Mermaid sequence diagram - auth/authorization flow

sequenceDiagram
  autonumber
  participant U as کاربر
  participant API as Django/DRF API
  participant Auth as Auth/Permission Layer
  participant View as View/Serializer
  participant DB as Database
  U->>API: ارسال درخواست
  API->>Auth: اعتبارسنجی token/session/permission
  Auth-->>API: context کاربر یا خطای 401/403
  API->>View: اجرای view/serializer
  View->>DB: خواندن یا نوشتن داده
  DB-->>U: response کنترل‌شده

تحلیل ریسک و توصیه‌ها

ریسک‌های زیر از نوع قابلیت‌ها و فایل‌های امنیتی استخراج شده‌اند و برای production باید با تست و تنظیمات runtime کامل شوند.

  • برای هر endpoint حساس، policy دسترسی و تست 401/403 جداگانه ثبت شود.
  • مقادیر env، token، password و connection string فقط با نام متغیر مستند شوند و مقدار واقعی نمایش داده نشود.
  • رخدادهای login، تغییر permission، تغییر تنظیمات و عملیات destructive در audit log قابل ردیابی باشند.
  • برای upload فایل، محدودیت نوع/حجم، مسیر ذخیره‌سازی، مالکیت فایل و scan امنیتی بررسی شود.
  • برای عملیات مالی یا تراکنشی، idempotency key، audit trail و کنترل role با حساسیت بالا الزامی است.
  • تنظیمات CORS، CSRF/session یا bearer token در محیط production جدا از تنظیمات local بازبینی شود.

منابع کد امنیتی

  • auth_app/__init__.py
  • auth_app/admin.py
  • auth_app/apps.py
  • auth_app/migrations/0001_initial.py
  • auth_app/migrations/0002_otp_datetime_requested_alter_extendeduser_role.py
  • auth_app/migrations/0003_city_is_active.py
  • auth_app/migrations/0004_role_roleassignment.py
  • auth_app/migrations/0005_validation.py
  • auth_app/migrations/0006_rename_validation_fieldvalidation.py
  • auth_app/migrations/0007_project_supervisor_adminmenu_roleassignment_project_and_more.py
  • auth_app/migrations/0008_rename_error_msg_en_fieldvalidation_lenght_error_msg_en_and_more.py
  • auth_app/migrations/0009_questionanswertypevalidation.py
  • auth_app/migrations/0010_fieldvalidation_choice_count_error_msg_en_and_more.py
  • auth_app/migrations/0011_uploadedfile.py
  • auth_app/migrations/0012_uploadedfile_name_uploadedfile_type.py
  • auth_app/migrations/0013_uploadedfile_icon_alter_uploadedfile_type.py
  • auth_app/migrations/0014_fieldvalidation_name.py
  • auth_app/migrations/0015_alter_fieldvalidation_regex.py
  • auth_app/migrations/0016_fieldvalidation_regex_json.py
  • auth_app/migrations/0017_remove_fieldvalidation_regex_json_and_more.py
  • auth_app/migrations/0018_authenticationimage.py
  • auth_app/migrations/0019_alter_authenticationimage_user.py
  • auth_app/migrations/0020_project_promoting_type.py
  • auth_app/migrations/0021_role_priority.py
  • auth_app/migrations/0022_company_project_company.py
  • auth_app/migrations/0023_region_district.py
  • auth_app/migrations/0024_alter_supervisor_unique_together_supervisorchangelog.py
  • auth_app/migrations/0025_document_extendeduser_iban_and_more.py
  • auth_app/migrations/0026_remove_documentphoto_link_documentphoto_file.py
  • auth_app/migrations/0027_extendeduser_birthday.py
  • auth_app/migrations/0028_rename_abbrev_document_abbreviation_and_more.py
  • auth_app/migrations/0029_authenticationvalidationlog.py
  • auth_app/migrations/0029_limiter_modelfield_roleview_viewmethod_and_more.py
  • auth_app/migrations/0030_alter_viewmethod_method.py
  • auth_app/migrations/0030_delete_authenticationvalidationlog.py
  • auth_app/migrations/0031_remove_roleview_is_active_roleviewlimiter.py
  • auth_app/migrations/0031_uploadedfile_priority.py
  • auth_app/migrations/0032_alter_viewmethod_method_loglimiter.py
  • auth_app/migrations/0032_authenticationvalidationlog.py
  • auth_app/migrations/0033_limiter_datetime_created_and_more.py
  • auth_app/migrations/0034_merge_20241103_1156.py
  • auth_app/migrations/0035_extendeduser_roles.py
  • auth_app/migrations/0036_extendeduser_full_name.py
  • auth_app/migrations/0037_alter_roleassignment_user.py
  • auth_app/migrations/__init__.py
  • auth_app/models.py
  • auth_app/modules/uidshahkar.py
  • auth_app/permissions.py
  • auth_app/serializers.py
  • auth_app/tests.py
  • auth_app/views.py
  • config/migrations/0003_authenticationvalidationlog.py
  • config/migrations/0004_authenticationvalidationlog_birth_date_and_more.py
  • config/migrations/0005_authenticationvalidationlog_is_main_and_more.py
  • config/migrations/0006_addin_delete_authenticationvalidationlog.py
  • core/modules/permissions.py
  • main/authentication_backends.py
  • main/modules/permissions.py
  • wallet/secrets.py