گائیڈز

اپنی ایپ میں API keys کو محفوظ کیسے رکھیں

API keys کو محفوظ رکھنے کے لیے انہیں اپنے ہوسٹ پر secrets یا environment variables کے طور پر رکھیں، صرف سرور سائیڈ کوڈ میں استعمال کریں، اور انہیں کبھی چیٹ، کوڈ فائلوں، اسکرین شاٹس یا Git ریپوزٹری میں نہ ڈالیں۔ ہر key کو صرف اتنی اجازت دیں جتنی اسے واقعی درکار ہے، فراہم کنندہ کے پاس خرچ کی حد مقرر کریں، اور اگر کوئی key لیک ہو جائے تو اسے بدل دیں — نئی بنائیں اور پرانی حذف کریں — صرف چھپانا کافی نہیں۔

API key کسی سروس کا پاس ورڈ ہے۔ آپ کی OpenAI key کوئی آپ کے پیسوں سے AI استعمال کر سکتا ہے؛ آپ کی Stripe secret key کوئی رقم واپس کروا سکتا ہے؛ آپ کی ای میل فراہم کنندہ کی key کوئی آپ کے نام سے ای میل بھیج سکتا ہے۔ AI ایپ بلڈرز ان چیزوں کو جوڑنے میں ماہر ہیں، مگر ہمیشہ یہ نہیں دیکھتے کہ وہ کہاں پہنچ جاتی ہیں۔ اس گائیڈ میں بتایا گیا ہے کہ انہیں کیسے محفوظ رکھیں اور کیسے جانچیں۔

عوامی key اور secret key میں فرق

ہر key خفیہ نہیں ہوتی۔ اس فرق کو جاننے سے آپ غلط key پر گھبراتے نہیں اور صحیح key کو نظرانداز نہیں کرتے۔

قسممثالیںکیا یہ براؤزر میں ہو سکتی ہے؟
Publishable / عوامی keysStripe کی pk_… key، آپ کے ڈومین تک محدود maps key، کچھ analytics IDsہاں — اسی کے لیے بنی ہیں
Secret keysStripe کی sk_…، OpenAI اور Anthropic کی keys، ای میل فراہم کنندہ کی keys، ڈیٹا بیس کے پاس ورڈکبھی نہیں
Service/admin keysوہ keys جو ہوسٹڈ ڈیٹا بیس پر رسائی کے اصول نظرانداز کرتی ہیںکبھی نہیں — انہیں سب سے حساس سمجھیں

اگر یقین نہ ہو کہ key کس قسم کی ہے تو فراہم کنندہ کی دستاویزات دیکھیں۔ شک ہو تو اسے خفیہ سمجھیں۔

مرحلہ 1: keys کو کوڈ میں نہیں، secrets کے طور پر رکھیں

Keys آپ کے ہوسٹ کی environment variables یا secrets کی سیٹنگز میں جانی چاہئیں۔ آپ کا کوڈ انہیں نام سے رن ٹائم پر پڑھتا ہے (مثلاً process.env.OPENAI_API_KEY)، تو قیمت کبھی آپ کی فائلوں میں نظر نہیں آتی۔ پس منظر کے لیے دیکھیں environment variables اور secrets کیا ہیں۔

ہر API key کو کوڈ سے نکال کر environment variables میں منتقل کریں۔ ہر وہ key جو آپ کو ملی، وہ کس فائل میں تھی، اور آپ نے کون سا variable نام رکھا، یہ فہرست دیں۔ مجھے قیمتیں نہ دکھائیں۔

پھر یہ جانچیں کہ کچھ باقی تو نہیں رہ گیا:

پورے پروجیکٹ میں، بشمول کنفیگ فائلیں اور کوئی بھی .env فائل، ایسی چیز تلاش کریں جو API key یا پاس ورڈ لگے۔ فائل اور لائن بتائیں، قیمت نہیں۔

مرحلہ 2: secret keys صرف سرور پر استعمال کریں

یہ سب سے اہم اصول ہے۔ براؤزر کو جو کچھ ملتا ہے، کوئی بھی وزیٹر اسے پڑھ سکتا ہے — صفحے کا سورس اور JavaScript فائلیں ڈیولپر ٹولز میں نظر آتی ہیں۔

تو اگر ایپ کو OpenAI کو کال کرنا ہے، تو براؤزر آپ کے سرور کو کال کرے، اور آپ کا سرور key کے ساتھ OpenAI کو کال کرے۔ key کبھی سرور سے باہر نہیں جاتی۔

چیٹ فیچر براہ راست براؤزر سے OpenAI کو کال کرتا ہے۔ وہ کال سرور کے API راستے پر منتقل کریں جو environment سے OPENAI_API_KEY پڑھے۔ براؤزر صرف ہمارے راستے کو کال کرے۔ اس راستے کے لیے لاگ اِن لازمی کریں۔

فرنٹ اینڈ فریم ورکس میں ایک عام جال پر نظر رکھیں: public prefix والے variables — Vite میں VITE_، Next.js میں NEXT_PUBLIC_ — جان بوجھ کر براؤزر کے کوڈ میں شامل کیے جاتے ہیں۔ secret key پر ایسا prefix ہو تو وہ ظاہر ہو جاتی ہے، چاہے وہ “environment variable” میں ہی کیوں نہ ہو۔

مرحلہ 3: جانچیں کہ کچھ لیک تو نہیں ہو رہا

صرف یہ امید نہ رکھیں کہ کام ہو گیا — لائیو سائٹ پر جانچیں:

  1. براؤزر میں شائع شدہ ایپ کھولیں۔
  2. ڈیولپر ٹولز کھولیں، پھر Sources یا Network ٹیب۔
  3. تمام فائلوں میں ہر secret key کے شروع کے حروف تلاش کریں (مثلاً sk_ یا sk-)۔
  4. ایپ کی نیٹ ورک درخواستیں دیکھیں۔ اگر براؤزر سے سیدھی کوئی ادا شدہ AI فراہم کنندہ کو درخواست جا رہی ہو تو یہ خطرے کی علامت ہے۔

اگر کوئی secret key ملے تو اسے سرور پر منتقل کریں (مرحلہ 2) اور بدلیں (مرحلہ 6)، کیونکہ وہ پہلے ہی عوامی ہو چکی تھی۔

مرحلہ 4: ہر key کیا کر سکتی ہے، وہ محدود کریں

کئی فراہم کنندگان key کو محدود کرنے دیتے ہیں:

  • Scoped یا restricted keys جو صرف وہی کر سکیں جو ایپ کو چاہیے۔ مثلاً Stripe محدود اجازتوں والی restricted keys دیتا ہے۔
  • ڈومین یا IP کی پابندیاں ان keys کے لیے جنہیں عوامی ہونا ہی ہے، جیسے maps keys۔
  • ہر ایپ اور ہر environment کے لیے الگ keys، تاکہ ایک لیک سب کچھ ظاہر نہ کرے، اور ایک کو منسوخ کرنے سے باقی نہ ٹوٹیں۔
  • بنانے کے دوران test keys، اور لائیو keys صرف شائع شدہ ایپ میں۔

مرحلہ 5: نقصان کی حد مقرر کریں

اچھی طرح محفوظ key کو بھی آپ کی اپنی ایپ کے ذریعے غلط استعمال کیا جا سکتا ہے — مثلاً کوئی آپ کے AI فیچر کو ہزاروں بار اسکرپٹ سے چلا دے۔

  • ہر ادا شدہ فراہم کنندہ پر خرچ کی حد یا الرٹس مقرر کریں۔
  • ہر اس فیچر کے لیے لاگ اِن لازمی کریں جو فی کال پیسے خرچ کرتا ہے۔
  • فی صارف ریٹ لمٹ شامل کریں۔ دیکھیں ریٹ لمٹنگ کیا ہے۔

/api/chat کے لیے فی صارف فی گھنٹہ 30 AI درخواستوں کی حد لگائیں۔ حد پوری ہونے پر واضح پیغام دیں۔ جو صارف لاگ اِن نہیں، ان کی درخواستیں مسترد کریں۔

مرحلہ 6: لیک ہونے والی keys بدلیں

اگر کوئی secret key ایسی جگہ ظاہر ہو جائے جہاں نہیں ہونی چاہیے — چیٹ پیغام، کمٹ، اسکرین شاٹ، سپورٹ ٹکٹ، براؤزر کا کوڈ — تو فرض کریں کہ وہ سمجھوتہ ہو چکی ہے۔

  1. فراہم کنندہ کے پاس نئی key بنائیں۔
  2. اپنی ایپ کی سیٹنگز میں secret اپڈیٹ کریں۔
  3. دوبارہ ڈپلائے یا پبلش کریں تاکہ لائیو ایپ نئی key استعمال کرے۔
  4. فراہم کنندہ کے پاس پرانی key حذف کریں۔
  5. فراہم کنندہ کے استعمال کے لاگز میں وہ سرگرمی دیکھیں جو آپ کو پہچانی نہ لگے۔

چیٹ پیغام یا Git کمٹ حذف کرنا کافی نہیں۔ Git کی ہسٹری پرانے ورژن رکھتی ہے، اور جو کچھ عوامی ہو چکا ہو اس کی نقلیں بن چکی ہو سکتی ہیں۔

عام غلطیاں

  • prompt میں key پیسٹ کرنا۔ وہ اب چیٹ کی تاریخ میں ہے۔ اس کے بجائے secrets کا فارم استعمال کریں۔
  • secret variable پر public prefix۔ VITE_OPENAI_API_KEY ہر وزیٹر کو key بھیج دیتا ہے۔
  • .env فائل کمٹ کرنا۔ پہلے push سے پہلے یقینی بنائیں کہ وہ .gitignore میں ہو۔
  • ہر جگہ ایک ہی key۔ ٹیسٹ اور لائیو کے لیے، اور ہر ایپ کے لیے الگ keys رکھیں۔
  • کوئی خرچ کی حد نہ ہونا۔ لیک یا غلط استعمال ہونے والی key بغیر حد کے آپ کے علم میں آنے سے پہلے بڑا بل بنا سکتی ہے۔
  • بدلنے کے بجائے چھپانا۔ ایک بار key ظاہر ہو جائے تو صرف نئی key ہی مسئلہ حل کرتی ہے۔
  • اسکرین شاٹس میں keys۔ مدد کے لیے شیئر کرنے سے پہلے سیٹنگز کے صفحات کو کاٹیں یا دھندلا کریں۔

چیک لسٹ

  • ہر key secret یا environment variable کے طور پر محفوظ ہے، کوڈ میں نہیں۔
  • کوئی .env فائل یا key Git میں کمٹ نہیں ہوئی۔
  • Secret keys صرف سرور سائیڈ کوڈ میں استعمال ہوتی ہیں۔
  • کسی secret variable پر VITE_ یا NEXT_PUBLIC_ جیسا public prefix نہیں۔
  • میں نے لائیو سائٹ کے JavaScript میں ہر key کا prefix تلاش کیا اور کچھ نہیں ملا۔
  • جہاں فراہم کنندہ اجازت دیتا ہے، keys محدود یا scoped ہیں۔
  • ٹیسٹ اور لائیو keys الگ ہیں۔
  • ادا شدہ فیچرز کے لیے لاگ اِن اور فی صارف حد ہے۔
  • ہر ادا شدہ فراہم کنندہ پر خرچ کی حد یا الرٹ ہے۔
  • میں جانتا ہوں ہر key کیسے بدلنی ہے، اور جو کبھی ظاہر ہوئی ہو وہ بدل دی گئی ہے۔

Mythex پر API keys کی حفاظت

Mythex keys کو آپ کے کوڈ اور چیٹ سے دو طریقوں سے دور رکھتا ہے:

  • Secrets کا درخواستی کارڈ۔ جب ایجنٹ کو کوئی key درکار ہو تو چیٹ میں ایک کارڈ دکھاتا ہے جہاں آپ قیمت فارم کے فیلڈز میں درج کرتے ہیں، پیغام کے باکس میں نہیں، اور وہ پروجیکٹ کے secret کے طور پر محفوظ ہوتی ہے۔ دیکھیں چیٹ میں Secrets۔
  • Project settings → Secrets، یا چیٹ میں /secrets، سے آپ خود keys شامل یا تبدیل کر سکتے ہیں۔ دیکھیں Environment variables اور secrets۔

شائع شدہ ایپ کا secret بدلنے کے بعد دوبارہ پبلش کریں تاکہ لائیو ایپ اسے اپنا لے۔ ایکسپورٹ کیے گئے پروجیکٹس میں secrets شامل نہیں ہوتے، تو جہاں بھی کوڈ چلائیں وہاں انہیں دوبارہ شامل کریں۔ اگر کوئی key کبھی چیٹ میں ظاہر ہو جائے تو فراہم کنندہ کے پاس اسے بدل دیں۔

شپ سے پہلے کی باقی سکیورٹی جانچ کے لیے AI سے بنی ایپس کی سکیورٹی چیک لسٹ پر کام کریں۔ اگر آپ AI فیچرز شامل کر رہے ہیں تو LLM APIs کیسے استعمال کریں میں keys اور اخراجات کی مزید تفصیل ہے۔

سوالات

کیا فرنٹ اینڈ کوڈ میں API key ڈالنا محفوظ ہے؟

صرف اس صورت میں جب فراہم کنندہ نے وہ key عوامی ہونے کے لیے بنائی ہو، جیسے Stripe کی publishable key یا وہ maps key جو آپ کے ڈومین تک محدود ہو۔ ہر وہ key جو پیسے خرچ کر سکے یا نجی ڈیٹا پڑھ سکے، سرور پر ہی رہنی چاہیے، کیونکہ براؤزر کو بھیجی گئی ہر چیز کوئی بھی پڑھ سکتا ہے۔

اگر میں نے API key چیٹ یا کسی عوامی ریپوزٹری میں پیسٹ کر دی ہو تو کیا کروں؟

اسے بدل دیں: فراہم کنندہ کے پاس نئی key بنائیں، اپنی ایپ کی secrets اپڈیٹ کریں، دوبارہ پبلش کریں، پھر پرانی key حذف کریں۔ صرف پیغام یا کمٹ حذف کرنا کافی نہیں، کیونکہ اس کی نقلیں پہلے ہی موجود ہو سکتی ہیں۔

API keys کہاں محفوظ رکھنی چاہئیں؟

اپنے ہوسٹ کی environment variables یا secrets کی سیٹنگز میں، جنہیں سرور کا کوڈ رن ٹائم پر پڑھتا ہے۔ انہیں سورس فائلوں میں نہ لکھیں، Git میں کمٹ نہ کریں، اور اسکرین شاٹس میں شامل نہ کریں۔

کیا پتا چلے کہ میری ویب سائٹ پر API key ظاہر ہو گئی ہے؟

اپنی لائیو سائٹ کھولیں، براؤزر کے ڈیولپر ٹولز میں صفحے کا سورس اور JavaScript فائلیں دیکھیں، اور key کے شروع کے حصے کو تلاش کریں۔ اگر وہ ملے تو وہ ظاہر ہو چکی ہے، اسے سرور پر منتقل کرنا اور بدلنا چاہیے۔

Mythex · Pricing · AI کے ساتھ کچھ بھی بنائیں · ویب سائٹ اور ایپ ٹیمپلیٹس · Mythex کا موازنہ · AI سے ایپ بنانے کی اصطلاحات · AI سے ایپ بنانے کے مفت ٹولز · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)