دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۳
  • اسفند

جلسه ۲۴ : آموزش امنیت در CodeIgniter

  • دسته‌بندی‌ها :
جلسه ۲۴ : آموزش امنیت در CodeIgniter
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که دوره آموزش codeigniter را دنبال می کنند. در جلسه قبل با مسئله بین المللی سازی در فریم ورک codeigniter و افزودن زبان مورد نیاز خود به آن آشنا شدید. در این جلسه که آخرین جلسه از دوره آموزش codeigniter است؛ آموزش امنیت در codeigniter تقدیم شما می شود.

      آموزش امنیت در codeigniter

      در مبحث آموزش امنیت در codeigniter چندین روش پیش گیرنده یا روش های پیشگیری از حملات مخرب وجود دارد. در ادامه آموزش امنیت در codeigniter شما را با این روش ها آشنا خواهیم کرد.

      روش پیش گیرنده XSS

      XSS به معنای اسکریپت متقابل سایت است. CodeIgniter با امنیت فیلتر XSS همراه است.
      این فیلتر هر گونه کد جاوا اسکریپت مخرب یا هر چیزی دیگر که تلاش میکند از کوکی ها ربوده شده و فعالیتهای مخرب به امنیت سایت شما آسیب برساند جلوگیری می کند.
      برای فیلتر کردن داده ها از طریق فیلتر XSS، از روش()xss_clean به شکل زیر استفاده کنید.

      مثال : 

      بهتر است از این عملکرد فقط هنگام ارسال داده استفاده نمایید.
      دومین پارامتر اختیاری Boolean می تواند برای بررسی فایل های تصویری در هنگام حملات XSS مورد استفاده قرار گیرد.
      این کار موجب سهولت آپلود فایل می شود.
      اگر مقدار تعیین شده درست باشد؛در آن صورت عکس ایمن و بی خطر است و اگر این مقدار درست نباشد؛ عکس مشکل امنیتی در بارگذاری دارد.

      پیشگیری از ورود SQL

      اضافه شدن SQL یک نوع حمله به پایگاه داده محسوب می شود.
      در PHP برای دفع این جمله از تابع و سایر تکنیک های مشابه آن استفاده می شود.
      در codeigniter برای تأمین امنیت از توابع داخلی و کتابخانه ها آن استفاده می شود.
      می توان در codeigniter به سه روش از ورود و حمله SQL جلوگیری کرد:

      • Escaping Queries
      • Query Biding
      • Active Record Class

      روش Escaping Querie

      مثال : 

      تابع ()$this->db->escape به صورت خودکار یک نقل قول را در اطراف داده ها اضافه می کند و نوع داده را تعیین می نماید تا امکان فرار از داده های رشته (string data) را فراهم آورد.

      روش Query Biding

      مثال : 

      در مثال بالا، علامت سوال (؟) توسط array در پارامتر دوم تابع query () جایگزین می شود.
      مزیت اصلی این روش این است که مقادیر به صورت اتوماتیک فرار می کنند که باعث ایجاد کوئری های امن می شود. موتور codeigniter این کار را به صورت خودکار انجام می دهد، بنابراین لزومی نیست که آن را به خاطر بسپارید.

      روش Active Record Class

      مثال : 

      استفاده از active records، موجب تولید ساختار کوئری توسط هر یک از آداپتور های پایگاه داده می شود.
      این قابلیت علاوه بر این، امکان نمایش اطلاعات ایمن را فراهم می کند، زیرا مقادیر موجود در این روش به طور خودکار از بین می روند.

      مخفی سازی خطاهای PHP

      در محیط تولید، اغلب نمی خواهیم پیام خطایی برای کاربران نمایش دهیم. چنین قابلیتی در محیط های توسعه با هدف رفع چنین موانعی فعال شود.
      چنین پیام خای خطایی ممکن است حاوی اطلاعاتی باشد که نباید به دلایل امنیتی آن را به کاربران سایت نشان داد.
      در کدایگنایتر سه نوع فایل در رابطه با این خطا وجود دارد:

      PHP Error Reporting Level :

      محیط های متفاوت کوئری، سطوح گزارش خطا متفاوتی نیز دارند. به صورت پیش فرض development خطاها را نمایش می دهد اما testing و live آن ها را پنهان می کنند.
      یک فایل به نام index.php در دایرکتوری ریشه ای codeigniter وجود دارد که برای این منظور استفاده می شود.
      اگر ما مقدار صفر را به عنوان یک argument به تابع ()error_reporting منتقل نماییم؛ این عمل موجب مخفی شدن همه خطاها می شود.

      Database Error :

      اگر حتی با خاموش بودن خطاهای PHP، خطاهای MySQL هنوز باز هستند. می توانید این بار آن  را در application/config/database.php خاموش کنید.
      همانطور که در زیر نشان داده شده است؛ گزینه db_debug را در  dl array$ به FALSE تنظیم نمایید.

      مثال : 

      Error log :

      یک راه دیگر برای رفع این مشکل انتقال خطاها به لاگ فایل ها ( log files ) است.
      این عمر موجب مخفی ماندن خطاها از چشمان کاربران می شود.
      مقدار log_threshold را به صورت زیر، در config array$ که در فایل application/cofig/config.php به ۱ تنظیم نمایید.

      مثال : 

      پیشگیری از CSRF

      CSRF به معنای جعل درخواست متقابل است. شما می توانید این حمله را با فعال کردن آن در فایل application/config/config.php مانند زیر نشان دهید.

      مثال : 

      هنگام ایجاد فرم با استفاده از تابع ()form_open، این تابع به طور خودکار یک CSRF را به عنوان فیلد پنهان وارد می کند.
      علاوه بر این می توانید CSRF را با استفاده از تابع ()get_csrf_token_name و ()get_csrf_hash به صورت دستی اضافه کنید.
      تابع ()get_csrf_token_name نام CSRF مورد نظر را بر می گرداند و تابع ()get_csrf_hash مقدار hash را در CSRF باز می گرداند.

      نشانه CSRF می تواند هر بار برای ارسال تجدید شود؛ علاوه بر این می توانید آن را در طول عمر کوکی CSRF نیز نگه دارید.
      ماطبق شکل زیر می توانید با تنظیم مقدار TRUE، در array پیکربندی با کلید ‘csrf_regenerate’، به باز تولید token بپردازید.

      مثال : 

      می توانید با استفاده از کلید ‘csrf_exclude_uris’ ، مطابق شکل زیر  URL های سفید را از CSRF محافظت نمایید.
      علاوه بر این  می توانید از عبارت منظم استفاده کنید.

      مثال : 

      مخفی سازی رمز عبور

      هنگام تنظیم رمز عبور به نکات زیر توجه داشته باشید:

      • کلمه عبور را در قالب متن ساده ذخیره نکنید.
      • همیشه رمزهای عبور خود را hash نمایید.
      • از Base64 یا کدگذاری مشابه برای ذخیره کلمه عبور استفاده نکنید.
      • از الگوریتمهای ضعیف کننده یا خراب مانند MD5 یا SHA1 استفاده نکنید. فقط با استفاده از الگوریتم های hash سازی رمز عبور قوی، مانند BCrypt، که در عملکردهای Hashing Password Hashing خود استفاده می شوند، استفاده نمایید.
      • هرگز رمز عبور را در قالب متن ساده نمایش ندهید و یا ارسال نکنید.
      • در رمز عبور کاربران محدودیت های غیر ضروری تعیین ننماید.

      کلام آخر

      در آموزش امنیت در codeigniter چندین روش پیشگیری کننده یا پیش گیرنده به شما معرفی شد که به یاری این روش ها قادر خواهید بود که کاربری امنی در codeigniter تجربه نمایید.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۲۴ : آموزش امنیت در CodeIgniter
      به اشتراک بگذارید