فارسی | English
| نسخه | وضعیت پشتیبانی |
|---|---|
| 1.x | ✅ |
برای گزارش آسیبپذیریهای امنیتی، لطفاً از بخش گزارش خصوصی آسیبپذیری گیتهاب (تب Security در صفحه اصلی ریپوزیتوری) استفاده کنید و از طرح عمومی آن در Issue یا PR خودداری فرمایید.
لطفاً در گزارش خود موارد زیر را قید کنید:
- نام پکیج و نسخه آسیبپذیر
- مراحل بازتولید مشکل
- ارزیابی سطح اثرگذاری آسیبپذیری
زمان هدف برای پاسخگویی اولیه: حداکثر ۷ روز کاری.
- محدودیت طول ورودی: تمام اعتبارسنجها پیش از هرگونه نرمالسازی، ورودیهای طولانیتر از ۱۲۸ کاراکتر را با کد خطای
ValueTooLargeرد میکنند؛ بدین ترتیب بارهای بزرگ (حتی شامل فاصله/خط تیره/ارقام فارسی) بدون تخصیص حافظه و بدون پردازش متغیر با اندازه ورودی، سریع رد میشوند. - نرمالسازی ایمن: نرمالساز فقط برای ورودیهای کوچک (≤ ۱۰۲۴ کاراکتر) از حافظهی پشته استفاده میکند و برای ورودیهای بزرگتر، بافرهای pooled از Heap میگیرد؛ بنابراین ورودی بزرگ هرگز نمیتواند باعث سرریز پشته (StackOverflow) و از کار افتادن فرایند شود.
- مدیریت تخصیص حافظه (Zero Allocation): مسیرهای اصلی اعتبارسنجی حافظه Heap تخصیص نمیدهند، که این امر سیستم را در برابر حملات DoS مبتنی بر فشار روی Garbage Collector (GC) مقاوم میسازد.
- کنترل Unicode: کاراکترهای bidi در مسیر validatorها حذف نمیشوند و باعث رد ورودی میشوند؛ zero-width و format characterهای شناختهشده طبق فهرست مرکزی نرمال میشوند.
- تنظیمات محلی و Thread-Safe:
PassportValidator.Instanceهمیشه strict است و پذیرش فرمت ۸رقمی آرشیو فقط با نمونهی immutable جداخواندهشده ازPassportValidator.CreateArchiveValidator()انجام میشود؛ wrapperهای DataAnnotations و FluentValidation این opt-in را در محدودهی هر نمونه نگه میدارند و هیچ وضعیت سراسری قابل تغییر وجود ندارد. - میدلور
UseIranValidation: تنها خطاهای اعتبارسنجی (ValidationException) به وضعیت 400 نگاشت میشوند؛ سایر استثناها بهصورت یک پاسخ 500 عمومی (بدون لو رفتن پیام خطای داخلی) برگردانده و در سمت سرور ثبت میشوند. - کاهش وابستگیهای خارجی: هسته پروژه صرفاً به متدهای استاندارد فریمورک وابسته است.
- حفظ حریم خصوصی: این کتابخانه هیچگونه داده شخصی را ذخیره نکرده و صرفاً ساختار ورودی را ارزیابی مینماید.