Xavfsiz API kalitlarini yaratish bo'yicha eng yaxshi amaliyotlar

API-lar qanchalik muhimligini barchamiz bilamiz. Ular boshqa xizmatlarni o'rganishda, ular bilan integratsiyalashishda va tezroq ajoyib echimlarni ishlab chiqarishda xizmat qiladi.

Boshqa dasturchilar foydalanishi uchun siz API yaratgan bo'lishingiz yoki qurish haqida o'ylayotgan bo'lishingiz mumkin. Qaytariladigan ma'lumotlarga avtorizatsiyalangan kirishni ta'minlash uchun API-ning ba'zi bir autentifikatsiya shakli talab qilinadi.

Bugungi kunda bir nechta autentifikatsiya standartlari mavjud, masalan, API Keys, OAuth, JWT va boshqalar.

Ushbu maqolada, API-ga kirish uchun API kalitlarini qanday to'g'ri boshqarish kerakligini ko'rib chiqamiz.

Xo'sh, nima uchun API kalitlari?

API tugmachalarini ishlatish juda oson, ular qisqa, statik va bekor qilinmasa tugaydi. Ular bir nechta xizmatlarni bir-biriga bog'lash uchun qulay usulni ta'minlaydi.

Agar siz mijozlaringizni iste'mol qilishi uchun API-ni taqdim qilsangiz, uni to'g'ri shaklda yaratish juda muhimdir.

Ishni boshlaymiz va sizga API kalitlarini qanday qilib to'g'ri o'rnatishni ko'rsataman.

API kalitlarini yaratish

API kalitining o'zi bu dastur yoki foydalanuvchini identifikatsiya qiladigan identifikator ekanligi sababli, u noyob, tasodifiy va taxmin qilib bo'lmaydigan bo'lishi kerak. Yaratilgan API kalitlari harf va raqamlardan foydalanishi kerak. Bunday API kalitiga misol bu zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx.

Xavfsiz API kalitlarini saqlash

API kaliti ma'lumotlarga to'g'ridan-to'g'ri kirishni ta'minlaganligi sababli, veb-yoki mobil dasturlardan foydalanuvchi bir xil ma'lumotlarga kirish huquqini beradigan parolga o'xshaydi.

O'ylab ko'r. Bizda API kalitlarini saqlashimiz kerak bo'lgan sabab, so'rovdagi API kaliti to'g'ri va biz tomonidan berilganiga (xuddi parol kabi) ishonch hosil qilishdir.

API xom kalitini bilishimiz shart emas, faqat kalit to'g'ri ekanligini tasdiqlashimiz kerak. Shunday qilib, kalitni oddiy matnda (yomon) saqlash yoki shifrlashning o'rniga, biz uni ma'lumotlar bazamizda axlat sifatida saqlashimiz kerak.

To'plangan qiymat shuni anglatadiki, agar kimdir bizning ma'lumotlar bazamizga ruxsatsiz kirish huquqiga ega bo'lsa ham, hech qanday API kalitlari buzilmaydi va barchasi xavfsizdir. Yakuniy foydalanuvchi har bir API so'roviga xom API kalitini yuboradi va biz uni so'rovda API kalitini urib tasdiqlashimiz va to'ldirilgan kalitni ma'lumotlar bazamizda saqlanadigan xesh bilan solishtirishimiz mumkin. Mana bu Java-da qo'pol ravishda amalga oshirilgan:

Yuqoridagi kodda birlamchi kalit prefiks va API {kaliti} aralashmasi bo'ladi. {Hash_of_whole_api_key}.

Ammo ushlab turing, yana ko'p narsalar bor. To'plangan qiymatni saqlash muayyan foydalanish uchun muammolarga olib keladi. Kelinglar, ularga murojaat qilaylik.

Foydalanuvchilarga API kalitini taqdim etish

Biz asl API kalitini saqlamaganimiz sababli uni yaratishda foydalanuvchiga faqat bir marta ko'rsata olamiz. Shunday qilib, foydalanuvchilarga uni qaytarib olishning iloji yo'qligi haqida ogohlantiring va agar ular API kalitini nusxalashni va uni xavfsiz saqlashni unutgan bo'lsalar, yangi token yaratishlari kerak. Siz shunga o'xshash narsani qilishingiz mumkin:

Yaratilgan API kalitini ogohlantirish xabari bilan ko'rsatish

Keyinchalik foydalanuvchilar qanday qilib yaratilgan API kalitini aniqlaydilar

Boshqa muammo, foydalanuvchilar qanday qilib uni tahrirlashlari yoki bekor qilishlari kerak bo'lsa, sizning konsolingizda to'g'ri API kalitini aniqlaydilar. Buni API kalitiga prefiks qo'shib hal qilish mumkin. Rasmda nuqta bilan ajratilgan birinchi 7 ta belgidan (bu bizning prefiksimizdan) iboratligiga e'tibor bering.

Endi siz ushbu prefiksni ma'lumotlar bazasida saqlashingiz va konsolda ko'rsatishingiz mumkin, shunda foydalanuvchilar quyidagi kabi to'g'ri API kalitini tezda aniqlay oladilar:

API kalitlarini boshqarish pulti

API kalitiga butun quvvatni bermang

API kalitlari etkazib beruvchilarining bitta keng tarqalgan xatosi - hamma narsaga kirish uchun bitta kalitni berish, chunki boshqarish oson. Buni qilmang. Aytaylik, foydalanuvchi elektron pochta xabarini o'qishi kerak va API kalitini yaratadi. Endi bu kalit boshqa xizmatlardan to'liq foydalanish huquqiga ega, shu jumladan ma'lumotlar bazasidagi yozuvlarni o'chirish.

To'g'ri yondashuv oxirgi foydalanuvchilarga API Kalitiga kirishni to'g'ri cheklash va API kaliti bajarishi mumkin bo'lgan aniq harakatlarni tanlashga imkon berishdir. Buni har bir soha ma'lum bir ruxsatni taqdim etadigan doiralarni taqdim etish orqali amalga oshirish mumkin.

Masalan,

  • agar sizga elektron pochta xabarlarini yuborish uchun API kaliti kerak bo'lsa, siz "email.send" nomi bilan API kalitini yaratishingiz mumkin
  • agar oxirgi foydalanuvchi bir nechta serverga ega bo'lsa va ularning har biri ma'lum bir harakatni amalga oshirsa, u holda alohida API kalitini muayyan doirada yaratish mumkin.

Shunday qilib, API kalitini yaratishda, foydalanuvchilarga quyidagi rasmda bo'lgani kabi ushbu API kalitiga kirish huquqini tanlashlariga imkon bering.

Shu tarzda foydalanuvchilar bir nechta API kalitlarini yaratishi mumkin, ularning har biri xavfsizlikni yaxshilash uchun maxsus kirish qoidalariga ega. Agar API so'rovi qabul qilinsa, siz API kalitining ushbu API-ga kirish huquqiga egaligini tekshirishingiz mumkin. Endi ma'lumotlar bazasi quyidagicha ko'rinadi:

API kaliti ma'lumotlar bazasi ob'ekti

API kalitlarini cheklash

Ha, buni allaqachon bilishingiz mumkin, ammo biron bir yomon aktyor sizning API serverlaringizni o'chirmasligi yoki boshqa mijozlaringizga ta'sir qilishi mumkin emasligi uchun maxsus API Kalitlari yordamida qilingan cheklov so'rovlarini baholash juda muhimdir. Tegishli stavkalarni cheklash va monitoring echimiga ega bo'lish, API xizmatini sog'lom qiladi.

Xulosa

To'g'ri o'rnatilganida API kalitlari hali ham boshqa server bilan aloqa qilishning eng yaxshi usuli hisoblanadi. Ushbu maqolada ko'rib chiqqanimizdek, ba'zi bir amaliyotlar quyidagi API iste'molchilari uchun ham, API provayderlari uchun ham foyda keltiradi. Bu sizga yordam beradi deb umid qilaman.

API xavfsizligingizdan xursandman!