- جمعه 24 مهر 1405 ساعت 16:00
- 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) را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.