امنیت
این بخش فقط لیست فایل نیست؛ کنترلهای امنیتی قابل مشاهده از روی 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/file | CORS در سطح 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__.pyauth_app/admin.pyauth_app/apps.pyauth_app/migrations/0001_initial.pyauth_app/migrations/0002_otp_datetime_requested_alter_extendeduser_role.pyauth_app/migrations/0003_city_is_active.pyauth_app/migrations/0004_role_roleassignment.pyauth_app/migrations/0005_validation.pyauth_app/migrations/0006_rename_validation_fieldvalidation.pyauth_app/migrations/0007_project_supervisor_adminmenu_roleassignment_project_and_more.pyauth_app/migrations/0008_rename_error_msg_en_fieldvalidation_lenght_error_msg_en_and_more.pyauth_app/migrations/0009_questionanswertypevalidation.pyauth_app/migrations/0010_fieldvalidation_choice_count_error_msg_en_and_more.pyauth_app/migrations/0011_uploadedfile.pyauth_app/migrations/0012_uploadedfile_name_uploadedfile_type.pyauth_app/migrations/0013_uploadedfile_icon_alter_uploadedfile_type.pyauth_app/migrations/0014_fieldvalidation_name.pyauth_app/migrations/0015_alter_fieldvalidation_regex.pyauth_app/migrations/0016_fieldvalidation_regex_json.pyauth_app/migrations/0017_remove_fieldvalidation_regex_json_and_more.pyauth_app/migrations/0018_authenticationimage.pyauth_app/migrations/0019_alter_authenticationimage_user.pyauth_app/migrations/0020_project_promoting_type.pyauth_app/migrations/0021_role_priority.pyauth_app/migrations/0022_company_project_company.pyauth_app/migrations/0023_region_district.pyauth_app/migrations/0024_alter_supervisor_unique_together_supervisorchangelog.pyauth_app/migrations/0025_document_extendeduser_iban_and_more.pyauth_app/migrations/0026_remove_documentphoto_link_documentphoto_file.pyauth_app/migrations/0027_extendeduser_birthday.pyauth_app/migrations/0028_rename_abbrev_document_abbreviation_and_more.pyauth_app/migrations/0029_authenticationvalidationlog.pyauth_app/migrations/0029_limiter_modelfield_roleview_viewmethod_and_more.pyauth_app/migrations/0030_alter_viewmethod_method.pyauth_app/migrations/0030_delete_authenticationvalidationlog.pyauth_app/migrations/0031_remove_roleview_is_active_roleviewlimiter.pyauth_app/migrations/0031_uploadedfile_priority.pyauth_app/migrations/0032_alter_viewmethod_method_loglimiter.pyauth_app/migrations/0032_authenticationvalidationlog.pyauth_app/migrations/0033_limiter_datetime_created_and_more.pyauth_app/migrations/0034_merge_20241103_1156.pyauth_app/migrations/0035_extendeduser_roles.pyauth_app/migrations/0036_extendeduser_full_name.pyauth_app/migrations/0037_alter_roleassignment_user.pyauth_app/migrations/__init__.pyauth_app/models.pyauth_app/modules/uidshahkar.pyauth_app/permissions.pyauth_app/serializers.pyauth_app/tests.pyauth_app/views.pyconfig/migrations/0003_authenticationvalidationlog.pyconfig/migrations/0004_authenticationvalidationlog_birth_date_and_more.pyconfig/migrations/0005_authenticationvalidationlog_is_main_and_more.pyconfig/migrations/0006_addin_delete_authenticationvalidationlog.pycore/modules/permissions.pymain/authentication_backends.pymain/modules/permissions.pywallet/secrets.py