theme wordpress
آموزشی

مدیریت اسرار درون برنامه iOS

چطور از امنیت اطلاعات داخل کد مطمئن شویم؟

تقریبا تمام برنامه های iOS به مقادیر خصوصی نظیر کلید های API ، رمز های عبور و … نیاز دارند. بعضی از آنها در کد برای کانفیگ(config) کردن کتابخانه های شخص ثالث(Third Party) یا API های بک اند(Back End) مورد استفاده قرار می‌گیرند. بعضی از این مقادیر در طول فرآیند build یا برای استفاده از ابزار های توسعه دهنده مانند ارتباط با یک اکانت Developer اپل استفاده می‌شوند.

روش های ساده برای الصاق کردن این مقادیر شامل موارد زیر است:

  1. قرار دادن آن ها به طور مستقیم در کد،
  2. قرار دادن شان در build scripts
  3.  نگه داشتن آن ها در یک فایل”Info.plist”.

متاسفانه این روش ها به این معنی است که اسرار به سورس کنترل فرستاده می‌شوند و برای هرکس که به کد دسترسی داشته باشد قابل رویت است. علاوه بر این، اسکریپت ها و فایل های plist به باندل(Bundle) برنامه اضافه می‌شوند و از برنامه کامپایل(Compile) شده قابل استخراج هستند.

ما قصد داریم راه های امن‌تری برای مدیریت اسرار در پروژه های iOS جهت استفاده از آن ها در کد معرفی کنیم. شایان ذکر است که نگه داشتن هر چیزی در برنامه به طور ۱۰۰% مخفی ، عملا غیرممکن است؛ آن هم زمانی که برنامه ها روی دستگاه کاربران هستند. یک رویکرد خوب این است که یک سطح مناسب حفاظت برقرار کنید؛ برای مثال یک برنامه بانکی قطعاً باید از امنیت بهتری نسبت به یک برنامه لیست کارهای روزانه برخوردار باشد.

منابع را کنترل کنید

به دلایل مختلف، بسیار مهم است که این اسرار را برای پروژه های باز یا شخصی خارج از سورس کنترل نگه داریم.

  1. با ارسال این اسرار به سورس کنترل شما تمام این مقادیر را با افرادی که حتی دسترسی Read-access به مخزن پروژه (Repository) دارند به اشتراک می‌گذارید.
  2. بعد از آنکه یک کاربر مخزن پروژه را بررسی کرد، یک کپی از تمام این اسرار را بر روی دستگاه خود خواهد داشت.
  3. اگر سیستم سورس کنترل شما در معرض خطر قرار گیرد نه تنها کد بلکه تمام آن پسورد ها و دیگر اسرار در خطر سرقت هستند.

گیت به ما این اجازه را می دهد تا یک فایل “.gitignore” را به هرجایی که می‌خواهیم آن را از سورس کنترل خارج نگه داریم اضافه کنیم. اگر این فایل ها برای برنامه ی ما ضروری باشد، کافی است هر توسعه دهنده ، آن ها را ساخته و با مقادیر لازم به پروژه اضافه کند. همچنین ما می توانیم یک نسخه نمونه از این فایل ها را در گیت قرار دهیم یا یک راهنما برای آنچه ضروری است در documentation پروژه قرار دهیم.

Cocoapods Keys

همانطور که بیشتر توسعه دهندگان iOS مطلع هستند، خیلی از پروژه های iOS از Cocoapods به عنوان یک dependency manager استفاده می‌کنند. Cocoapods شامل یک سیستم پلاگین است که اجازه می‌دهد پروسه های آن به برنامه متصل شوند. یکی از این پلاگین ها که می‌توانید برای مدیریت ایمن اسرار برنامه‌تان از آن استفاده کنید cocoapods-keys است.

نگه داشتن اسرار خارج از سورس کنترل تنها کاری که cocoapods-keys انجام می‌دهد نیست. این پلاگین اسرار را به طور ایمنی در Keychain سیستم شما نگه می‌دارد. زمانی که پادها نصب یا بروزرسانی می شوند مقدار هر کلید (key) که مقدار آن ذخیره نشده است ، از توسعه دهنده پرسیده می شود. یک کلاس Oblective-C زمانی که Cocoapods اجرا می شود، ساخته می شود که حاوی ورژن خامی از کلید ها و مقادیرشان است. در این زمان می توان مسیر “Pods/CocoaPodsKeys” را به “gitignore.” اضافه کرد.

این پلاگین مزیت های زیادی دارد:

  • این پلاگین برای هر کلید مقداری درخواست می کند که باعث بی نیاز شدن از ثبت مقادیر خصوصی لازم در documentation می شود. این موضوع کانفیگ کردن محیط پروژه را برای هر developer ای بسیار آسان تر می کند.
  • سورس فایل ایجاد شده را به راحتی می‌توان از سورس کنترل خارج نگه داشت.
  • اسرار در سورس ایجاد شده تقسیم می شوند تا در مقابل استخراج آن ها از کد باینری اپ جلوگیری شود.
  • برای Swift و Objective-C قابل استفاده است.
  • اگر در هنگام build به مقادیر این کلید ها نیاز داشتید می توانید از طریق خواندن keychain به آنها دسترسی داشته باشید.
  • ما می توانیم کلیدها را بین پروژه های مختلف که از cocoapods-keys استفاده می کنند به اشتراک بگذاریم.

در مقاله بعدی به نحوه استفاده از cocoapods-keys در توسعه برنامه های iOS خواهیم پرداخت.

با الفبایت همراه باشید…

منبع
lordcodes
برچسب ها
نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن
بستن