• 3.1.9
  • کامل شده
  • منقضی شده
این داکیومنت از طرف توسعه‌دهنده ساپورت نمی‌شود، جدیدترین ورژن داکیومنت بزودی ترجمه خواهد شد.

Security Class مجموعه‌ای از ابزارهای امنیتی CodeIgniter را ارائه می‌کند. این کلاس شامل قابلیت‌هایی مانند فیلتر XSS، پاک‌سازی نام فایل و تولید Tokenهای CSRF در ارتباط با چرخه درخواست است. این قابلیت‌ها باید در کنار اعتبارسنجی، مجوزدهی و Escape خروجی استفاده شوند.

ساختار و API اصلی

متد xss_clean() تلاش می‌کند ورودی را از الگوهای خطرناک XSS پاک کند و sanitize_filename() نام فایل را برای استفاده در مسیر امن‌تر می‌کند. CSRF Protection در تنظیمات اصلی فریمورک فعال می‌شود و در فرم‌های POST باید Token معتبر ارسال شود.

نمونه استفاده

 $this->load->library('security');
 $safeName = $this->security->sanitize_filename($uploadedName);
 $cleanText = $this->security->xss_clean($input);

نکته مهم

XSS Cleaning را جایگزین Output Encoding نکنید. هنگام نمایش متن در HTML از Escape متناسب با Context استفاده کنید و برای آپلود فایل، نام تصادفی و مسیر خارج از Web Root را ترجیح دهید.

مطالعه مرتبط

برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.

متدهای Security Class

متد یا مفهومکاربرد
xss_clean($str)فیلتر الگوهای شناخته‌شده XSS در ورودی.
sanitize_filename($str)پاک‌سازی نام فایل.
csrf_verify()بخشی از چرخه بررسی Token در درخواست.
get_csrf_hash()دریافت Hash فعلی Token CSRF.
get_csrf_token_name()دریافت نام فیلد Token.

نحوه استفاده و عیب‌یابی

در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.

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

در بازبینی کد، ترتیب و نتیجه متدهای xss_clean($str)، sanitize_filename($str)، csrf_verify()، get_csrf_hash() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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