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

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

کلیدهای API برای برنامه‌ها و پروژه‌هایی که از API و SDK پلتفرم Google Maps استفاده می‌کنند، مورد نیاز است. برای حداکثر امنیت و کمترین تلاش، کلیدهای API خود را هنگام ایجاد آنها ایمن کنید.

در حالی که می توان کلیدهای API را پس از ایجاد و استفاده از آنها ایمن کرد، ممکن است محدودیت های مختلفی بر اساس نحوه استفاده از کلید وجود داشته باشد. به روز رسانی یا جایگزینی کلیدها در برنامه های تلفن همراه (اندروید و iOS) پیچیده ترین است، زیرا تا زمانی که همه مشتریان برنامه های خود را به روز کنند، کلیدها همه جایگزین نمی شوند. به‌روزرسانی یا جایگزینی کلیدها در برنامه‌های جاوا اسکریپت یا خدمات وب بسیار ساده‌تر است، اما به‌روزرسانی یا جایگزینی این کلیدها ممکن است نیاز به برنامه‌ریزی دقیق و کار سریع داشته باشد.

روش‌های امنیتی قابل اعمال برای هر محصول Google Maps Platform، مانند Maps JavaScript API، در بخش اطلاعات بیشتر فهرست شده‌اند.

کلیدهای API خود را محدود کنید

هنگامی که برای اولین بار کلیدهای API خود را ایجاد می کنید، آنها را با یک محدودیت برنامه و یک یا چند محدودیت API محدود کنید.

  • محدودیت های برنامه، استفاده از کلید API را به یک پلت فرم خاص (اندروید یا iOS) یا سایت های خاص (آدرس IP عمومی و وب سایت) محدود می کند. فقط یک نوع محدودیت برنامه ممکن است به هر کلید API فردی اضافه شود.

  • محدودیت‌های API استفاده از کلیدهای API را به یک یا چند API یا SDK پلتفرم Google Maps محدود می‌کند. فقط درخواست‌های استفاده از API یا SDK مرتبط با یک کلید API پردازش می‌شوند. برای هر کلید API داده شده، می توانید به تعداد مورد نیاز محدودیت های API را مشخص کنید.

اگر کلید API خود را هنگام ایجاد ایمن نکردید، کلیدهای API اضافی ایجاد کنید و آنها را محدود کنید، سپس همه برنامه‌های خود را با کلیدهای API جدید به‌روزرسانی کنید. در حالی که یک کلید در هر برنامه برای اهداف امنیتی ایده‌آل است، می‌توانید از کلیدهای محدود در چندین برنامه استفاده کنید تا زمانی که انواع محدودیت‌های برنامه روی کلید باعث ایجاد مشکلات ناسازگاری با برنامه‌هایی که یک کلید مشترک دارند، نباشد.

اگر کلیدهای API را پس از ایجاد محدود می‌کنید، استفاده از کلید API را بررسی کنید تا مطمئن شوید که محدودیت‌ها هیچ یک از برنامه‌های موجود شما را نقض نمی‌کنند.

  1. به صفحه معیارهای Google Cloud Console بروید.

  2. نمایش فیلترها را انتخاب کنید.

  3. از Grouped By ، Credential را انتخاب کنید. خواهید دید که کدام کلیدهای API با کدام سرویس های Google استفاده می شود.

  4. روی اعتبارنامه کلیک کنید.

  5. همه اعتبارنامه ها را لغو انتخاب کنید.

  6. برای هر کلید نمایش داده شده، کلید را انتخاب کرده و Ok را کلیک کنید.

  7. از Grouped By ، API را انتخاب کنید. مشاهده خواهید کرد که کدام محدودیت های API را روی کلید اعمال کنید.

    انتخاب متد API از Grouped By ممکن است به شما سرنخ‌هایی بدهد که کدام نوع محدودیت برنامه برای یک کلید مناسب‌تر است.

یک محدودیت برنامه برای یک کلید API تنظیم کنید

  1. به صفحه اعتبارنامه بروید.
  2. کلید API را که می خواهید محدودیتی روی آن تنظیم کنید، انتخاب کنید. صفحه ویژگی کلید API ظاهر می شود.

  3. در زیر محدودیت های کلیدی، محدودیت های برنامه را انتخاب کنید.

    یکی از انواع محدودیت ها را انتخاب کنید و اطلاعات درخواستی را در لیست محدودیت ها ارائه دهید.

    نوع محدودیت شرح
    ارجاع دهنده های HTTP یک یا چند وب سایت مرجع را مشخص کنید. نویسه‌های Wildcard برای مجوز دادن به همه زیردامنه‌ها قابل قبول هستند (برای مثال *.google.com همه سایت‌هایی را که به .google.com ختم می‌شوند می‌پذیرد). https:// و http:// را همانطور که هست مشخص کنید. شما باید برای انواع دیگر پروتکل های URL ارجاع دهنده از یک نمایش خاص استفاده کنید. برای مثال، file:///path/to/ به صورت __file_url__//path/to/* فرمت کنید. پس از فعال کردن ارجاع‌دهنده‌ها، حتماً استفاده خود را زیر نظر داشته باشید تا مطمئن شوید که با انتظارات شما مطابقت دارد. پروتکل های مرجع زیر پشتیبانی می شوند: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://
    آدرس های IP یک آدرس IPv4 یا IPv6 یا یک زیرشبکه را با استفاده از نماد CIDR مشخص کنید. از آنجایی که درخواست وب سرویس وب، آدرس IP خارجی را با محدودیت کلید API بررسی و مقایسه می کند، از آدرس IP عمومی سرور استفاده کنید.
    برنامه های اندروید اثر انگشت گواهی امضای SHA-1 و نام بسته Android خود را از فایل AndroidManifest.xml خود اضافه کنید.
    برنامه های iOS در زیر انواع، شناسه بسته iOS مناسب را از لیست انتخاب کنید.
  4. ذخیره را انتخاب کنید.

یک محدودیت API برای یک کلید API تنظیم کنید

  1. به صفحه اعتبارنامه بروید.

  2. کلید API را که می خواهید محدود کنید انتخاب کنید. صفحه کلید API را محدود و تغییر نام دهید ظاهر می شود.

  3. تحت محدودیت های API :

    • روی Restrict key کلیک کنید.

    • روی منوی کشویی Select APIs کلیک کنید و API ها یا SDK هایی را که می خواهید برنامه شما با استفاده از کلید API به آن دسترسی داشته باشد، انتخاب کنید.

      (اگر یک API یا SDK در لیست نیست، باید آن را فعال کنید.)

  4. روی ذخیره کلیک کنید.

    پس از این مرحله محدودیت بخشی از تعریف کلید API می شود. اگر جزئیات مناسب را ارائه نکنید یا روی «ذخیره» کلیک نکنید، کلید API محدود نخواهد شد. (برای اطلاعات بیشتر، به راهنمای دریافت کلید API برای API یا SDK خاصی که به آن علاقه دارید مراجعه کنید.)

کلیدهای API استفاده نشده را حذف کنید

قبل از اینکه یک کلید API را حذف کنید، مطمئن شوید که در تولید استفاده نمی شود. اگر ترافیک موفقیت آمیزی وجود نداشته باشد، احتمالاً کلید حذف می شود.

برای حذف یک کلید API:

  1. به صفحه اعتبارنامه بروید.

  2. کلید API را که می خواهید حذف کنید انتخاب کنید.

  3. دکمه Delete را نزدیک بالای صفحه انتخاب کنید.

  4. هنگامی که گفتگوی حذف اعتبارنامه ظاهر شد، حذف را انتخاب کنید .

    انتشار یک کلید API چند دقیقه طول می کشد. پس از انتشار، ترافیک با استفاده از کلید API حذف شده رد خواهد شد.

راه های دیگر برای ایمن سازی API های خود

هنگام بازسازی کلیدهای API مراقب باشید

بازسازی یک کلید API یک کلید جدید ایجاد می کند که تمام محدودیت های کلید قدیمی را دارد. این همچنین یک تایمر 24 ساعته را برای غیرفعال کردن کلید API قدیمی راه اندازی می کند.

در این پنجره زمانی، هم کلید قدیمی و هم کلید جدید پذیرفته می‌شوند و به شما فرصتی می‌دهد تا برنامه‌های خود را برای استفاده از کلید جدید انتقال دهید. با این حال، هر برنامه‌ای که هنوز از کلید API قدیمی استفاده می‌کند، پس از سپری شدن این مدت کار خود را متوقف می‌کند.

  1. به صفحه کلیدهای API بروید.

  2. بازگشت به کلید قبلی را انتخاب کنید.

  3. در گفتگوی Revert ، روی Revert key کلیک کنید.

پس از برگشت، نسخه "جدید" قبلی کلید به نسخه قبلی تبدیل می شود و یک تایمر غیرفعال سازی 24 ساعته جدید برای آن تنظیم شده است. امکان بازگشت بین این دو مقدار کلیدی وجود دارد تا زمانی که کلید را دوباره تولید کنید.

این بازسازی دوم مقدار کلید غیرفعال قدیمی را بازنویسی می کند.

استفاده از API خود را نظارت کنید

برای بررسی میزان استفاده از کلید API:

  1. به صفحه متریک بروید.

  2. روی نمایش فیلترها کلیک کنید.

  3. از Grouped by ، روش API را انتخاب کنید.

  4. در کد پاسخ ، 2xx را انتخاب کنید تا هر درخواست موفقیت آمیز به این کلید را مشاهده کنید.

در صورت مشاهده استفاده غیرمجاز، موارد زیر را انجام دهید:

  1. کلیدهای خود را محدود کنید

    اگر از یک کلید در چندین برنامه استفاده می شود، به چند کلید API منتقل کنید ، ترجیحاً از کلیدهای API جداگانه برای هر برنامه استفاده کنید.

  2. اگر استفاده غیرمجاز ادامه یافت، کلیدهای آسیب دیده را بازسازی یا حذف کنید.

  3. با پشتیبانی تماس بگیرید .

برای هر برنامه از کلیدهای API جداگانه استفاده کنید

این دامنه هر کلید را محدود می کند. اگر یک کلید API به خطر بیفتد، می‌توانید بدون نیاز به به‌روزرسانی کلیدهای API دیگر، کلید تأثیرگذار را حذف یا بازسازی کنید.

به چندین کلید API مهاجرت کنید

برای انتقال از استفاده از یک کلید API برای چندین برنامه، به یک کلید API منحصر به فرد برای هر برنامه، موارد زیر را انجام دهید:

  1. مشخص کنید کدام برنامه ها به کلیدهای جدید نیاز دارند.

    • برنامه های وب ساده ترین به روز رسانی هستند، زیرا شما همه کدها را کنترل می کنید. برنامه ریزی کنید که همه کلیدهای برنامه های مبتنی بر وب خود را به روز کنید.
    • برنامه های تلفن همراه بسیار سخت تر هستند، زیرا مشتریان شما باید قبل از استفاده از کلیدهای جدید، برنامه های خود را به روز کنند.
  2. کلیدهای جدید را ایجاد و محدود کنید.

    • هم یک محدودیت برنامه و هم حداقل یک محدودیت API اضافه کنید.
  3. کلیدهای جدید را به برنامه های مختلف خود اضافه کنید.

    • برای برنامه های تلفن همراه، این فرآیند ممکن است ماه ها طول بکشد تا همه کاربران شما با کلید API جدید به آخرین برنامه به روز شوند.

روش‌های حفاظت از اپلیکیشن‌های Maps Web Service API یا Static Web APIs

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

  • کلیدهای API یا اسرار امضا را در فایل‌هایی خارج از درخت منبع برنامه خود ذخیره کنید . اگر کلیدهای API یا هر اطلاعات خصوصی دیگری را در فایل‌ها ذخیره می‌کنید، فایل‌ها را خارج از درخت منبع برنامه خود نگه دارید تا کلیدهای خود را از سیستم کنترل کد منبع خود دور نگه دارید. اگر از سیستم مدیریت کد منبع عمومی مانند GitHub استفاده می کنید، این امر به ویژه مهم است.

روش‌های حفاظت از برنامه‌های موبایل APIهای وب سرویس یا استاتیک وب API

  • از سرور پروکسی استفاده کنید. سرور پروکسی منبعی محکم برای تعامل با API مناسب پلتفرم نقشه های گوگل فراهم می کند. برای اطلاعات بیشتر در مورد استفاده از سرور پراکسی، به Living Vicariously: استفاده از سرورهای پروکسی با کتابخانه های سرویس گیرنده Google Data API مراجعه کنید.

  • کلید API یا رمز امضا را مبهم یا رمزگذاری کنید. این امر خراش دادن کلیدهای API و سایر داده های خصوصی را مستقیماً از برنامه پیچیده می کند.

اطلاعات بیشتر

این جداول محدودیت‌های کلید API مناسب و بهترین شیوه‌های امنیتی API را برای هر API، SDK یا سرویس Google Maps Platform فهرست می‌کنند.

وب‌سایت‌هایی با Maps JavaScript، Embed یا Static API

API/SDK/سرویس محدودیت برنامه ( 1 ) محدودیت API ( 1 ) بهترین شیوه ها
Maps JavaScript API ( 2 ) محدودیت ارجاع HTTP Maps JavaScript API
سرویس مسیرها، Maps JavaScript API محدودیت ارجاع HTTP Directions API، Maps JavaScript API
Distance Matrix Service، Maps JavaScript API محدودیت ارجاع HTTP Distance Matrix API، Maps JavaScript API
Elevation Service، Maps JavaScript API محدودیت ارجاع HTTP Elevation API، Maps JavaScript API
سرویس کدگذاری جغرافیایی، Maps JavaScript API محدودیت ارجاع HTTP Geocoding API، Maps JavaScript API
کتابخانه مکان‌ها، Maps JavaScript API محدودیت ارجاع HTTP Places API، Maps JavaScript API
Maps Embed API محدودیت ارجاع HTTP Maps Embed API
Maps Static API محدودیت ارجاع HTTP Maps Static API
API استاتیک نمای خیابان محدودیت ارجاع HTTP API استاتیک نمای خیابان

برنامه ها و سرورهایی که از خدمات وب استفاده می کنند

API/SDK/سرویس محدودیت برنامه ( 1 ) محدودیت API ( 1 ) بهترین شیوه ها
Address Validation API محدودیت آدرس IP ( 4 ) Address Validation API
Directions API محدودیت آدرس IP ( 4 ) Directions API
Distance Matrix API محدودیت آدرس IP ( 4 ) Distance Matrix API
Elevation API محدودیت آدرس IP ( 4 ) Elevation API
API کدگذاری جغرافیایی محدودیت آدرس IP ( 4 ) API کدگذاری جغرافیایی
API مکان جغرافیایی محدودیت آدرس IP ( 4 ) API مکان جغرافیایی
Places API ( 5 ) محدودیت آدرس IP ( 4 ) Places API
Roads API محدودیت آدرس IP ( 4 ) Roads API
API منطقه زمانی محدودیت آدرس IP ( 4 ) API منطقه زمانی

برنامه های اندروید

API/SDK/سرویس محدودیت برنامه ( 1 ) محدودیت API ( 1 ) بهترین شیوه ها
Maps SDK برای اندروید محدودیت اندروید Maps SDK برای اندروید
مکان‌های SDK برای Android محدودیت اندروید Places API

برنامه های iOS

API/SDK/سرویس محدودیت برنامه ( 1 ) محدودیت API ( 1 ) بهترین شیوه ها
Maps SDK برای iOS محدودیت iOS Maps SDK برای iOS
مکان‌های SDK برای iOS محدودیت iOS Places API

1 می توانید از یک کلید API نامحدود با هر API یا SDK پلتفرم Google Maps استفاده کنید. با این حال، ما قویاً توصیه می کنیم که کلیدهای API خود را محدود کنید، به خصوص در حالات زیر:

  • محیط تست برای عموم قابل مشاهده خواهد بود یا قابل مشاهده است.

  • برنامه ای که از کلید API استفاده می کند، آماده استفاده در محیط تولید است.

2 برای برنامه‌های تلفن همراه، از Maps SDK برای Android و Maps SDK برای iOS استفاده کنید.

3 برای Maps Static API و Street View Static API، علاوه بر یک کلید API، باید یک امضای دیجیتال ارائه دهید تا از سهمیه روزانه 25000 بارگیری نقشه فراتر رود.

اگر درخواست‌های خود را امضا می‌کنید، تعداد درخواست‌های بدون امضا را که می‌خواهید در روز مجاز کنید بررسی کنید و سهمیه درخواست‌های امضا نشده خود را بر این اساس تنظیم کنید .

4 محدودیت IP ممکن است در برخی سناریوها غیرعملی باشد، مانند برنامه های تلفن همراه و محیط های ابری که به آدرس های IP پویا متکی هستند. هنگام استفاده از Maps Web Service API در این سناریوها، برنامه های خود را با استفاده از یک سرور پراکسی یا مبهم ایمن کنید.

5 برای برنامه‌های تلفن همراه، از Places SDK برای Android و Places SDK برای iOS استفاده کنید.