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

Encrypt Class قدیمی CodeIgniter برای رمزگذاری و رمزگشایی داده‌ها ارائه شده است. این کلاس به‌دلیل محدودیت‌های طراحی و گزارش‌های امنیتی در نسخه‌های جدیدتر فریمورک Deprecated شده و در مستندات نسخه 3 باید صرفاً برای نگهداری پروژه‌های قدیمی شناخته شود.

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

متدهای قدیمی این کلاس مانند encode() و decode() با کلید رمزگذاری کار می‌کنند. برای کد جدید از این API استفاده نکنید و به جای آن Encryption Library را با الگوریتم و تنظیمات امن انتخاب کنید. رمزگذاری داده باید همراه با مدیریت امن کلید و نسخه‌بندی فرمت داده انجام شود.

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

 // Legacy code - do not use for new development
 $this->load->library('encrypt');
 $cipherText = $this->encrypt->encode($plainText);
 $plainText = $this->encrypt->decode($cipherText);

نکته مهم

این کلاس را با Hashing اشتباه نگیرید. رمزگذاری باید قابل بازگشت باشد، اما Hash یک‌طرفه است. برای گذرواژه از Password Hashing استاندارد PHP استفاده کنید.

مطالعه مرتبط

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

متدهای کلاس قدیمی Encrypt

متد یا مفهومکاربرد
encode($string)رمزگذاری با API قدیمی.
decode($string)رمزگشایی مقدار رمزگذاری‌شده.
set_key($key)تنظیم کلید در کدهای قدیمی.
encode_from_legacy($string)سازگاری با داده‌های قدیمی در مهاجرت.
محدودیتبرای کد جدید از این کلاس استفاده نکنید و API رمزنگاری جدید را بررسی کنید.

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

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

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

در بازبینی کد، ترتیب و نتیجه متدهای encode($string)، decode($string)، set_key($key)، encode_from_legacy($string) را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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