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

Encryption Library جایگزین امن‌تر و جدیدتر Encrypt Class قدیمی است. این کتابخانه برای رمزگذاری داده‌ای به کار می‌رود که بعداً باید بازیابی شود، مانند مقدار محرمانه‌ای که لازم است در سمت سرور دوباره خوانده شود. در CodeIgniter 3، پیکربندی کلید و Driver رمزنگاری اهمیت اساسی دارد.

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

کلید رمزنگاری را در config.php با گزینه encryption_key تعریف کنید و آن را خارج از مخزن کد نگه دارید. سپس کتابخانه را بارگذاری و با encrypt() داده را رمزگذاری و با decrypt() بازیابی کنید. در صورت خطا یا کلید نامعتبر، خروجی قابل استفاده‌ای دریافت نمی‌شود و باید نتیجه بررسی شود.

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

 $this->load->library('encryption');
 $cipherText = $this->encryption->encrypt($privateValue);
 $plainText = $this->encryption->decrypt($cipherText);

نکته مهم

کلید را در کد یا Git قرار ندهید و آن را با مقدار تصادفی قوی تولید کنید. برای رمزگذاری گذرواژه از این کتابخانه استفاده نکنید، چون گذرواژه باید Hash شود نه رمزگذاری قابل بازگشت.

مطالعه مرتبط

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

متدهای Encryption Library

متد یا مفهومکاربرد
initialize($params)تنظیم Driver و پارامترهای رمزنگاری.
encrypt($data)تولید متن رمزگذاری‌شده.
decrypt($data)بازیابی داده اصلی.
encryption_keyکلید محرمانه موردنیاز کتابخانه.
Driverانتخاب روش رمزنگاری سازگار با افزونه‌های نصب‌شده.

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

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

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

در بازبینی کد، ترتیب و نتیجه متدهای initialize($params)، encrypt($data)، decrypt($data)، encryption_key را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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