Skip to content

Security: NimaHp/IranValidator

Security

SECURITY.md

سیاست‌های امنیتی (Security Policy)

فارسی | 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 عمومی (بدون لو رفتن پیام خطای داخلی) برگردانده و در سمت سرور ثبت می‌شوند.
  • کاهش وابستگی‌های خارجی: هسته پروژه صرفاً به متدهای استاندارد فریمورک وابسته است.
  • حفظ حریم خصوصی: این کتابخانه هیچ‌گونه داده شخصی را ذخیره نکرده و صرفاً ساختار ورودی را ارزیابی می‌نماید.

There aren't any published security advisories