మీ యాప్లో API కీలను ఎలా సురక్షితంగా ఉంచాలి
API కీలను సురక్షితంగా ఉంచడానికి, వాటిని మీ హోస్ట్లో సీక్రెట్లు లేదా ఎన్విరాన్మెంట్ వేరియబుల్స్గా నిల్వ చేయండి, సర్వర్-వైపు కోడ్లో మాత్రమే వాడండి, మరియు వాటిని ఎప్పుడూ చాట్, కోడ్ ఫైళ్లు, స్క్రీన్షాట్లు లేదా Git రిపోజిటరీలో పేస్ట్ చేయకండి. ప్రతి కీకి అవసరమైన కనీస అనుమతి ఇవ్వండి, ప్రొవైడర్ వద్ద ఖర్చు పరిమితులు సెట్ చేయండి, మరియు కీ ఎప్పుడైనా లీక్ అయితే దాన్ని రొటేట్ చేయండి — అంటే కొత్తది సృష్టించి పాతదాన్ని తొలగించండి — అది ఎక్కడ కనిపించిందో దాన్ని దాచడం మాత్రమే కాకుండా.
API కీ ఒక సేవ కోసం పాస్వర్డ్. మీ OpenAI కీ ఎవరైనా మీ డబ్బుతో AI ఖర్చు చేయడానికి అనుమతిస్తుంది; మీ Stripe సీక్రెట్ కీ ఎవరైనా రీఫండ్లు ఇవ్వడానికి అనుమతిస్తుంది; మీ ఇమెయిల్ ప్రొవైడర్ కీ ఎవరైనా మీ పేరుతో మెయిల్ పంపడానికి అనుమతిస్తుంది. AI యాప్ బిల్డర్లు వాటిని కనెక్ట్ చేయడంలో మంచివారే, కానీ అవి ఎక్కడ ముగుస్తాయో ఎల్లప్పుడూ జాగ్రత్తగా ఉండరు, కాబట్టి ఈ గైడ్ వాటిని సురక్షితంగా ఎలా ఉంచాలో మరియు ఎలా తనిఖీ చేయాలో కవర్ చేస్తుంది.
పబ్లిక్ కీలు vs సీక్రెట్ కీలు
ప్రతి కీ రహస్యం కాదు. తేడా తెలిస్తే తప్పు కీ గురించి భయపడకుండా, సరైన కీని నిర్లక్ష్యం చేయకుండా ఉంటారు.
| రకం | ఉదాహరణలు | బ్రౌజర్లో ఉండవచ్చా? |
|---|---|---|
| పబ్లిషబుల్ / పబ్లిక్ కీలు | Stripe pk_… కీ, మీ డొమైన్కు పరిమితం చేసిన మ్యాప్స్ కీ, కొన్ని అనలిటిక్స్ IDలు | అవును — అలా రూపొందించబడ్డాయి |
| సీక్రెట్ కీలు | Stripe sk_…, OpenAI మరియు Anthropic కీలు, ఇమెయిల్ ప్రొవైడర్ కీలు, డేటాబేస్ పాస్వర్డ్లు | ఎప్పుడూ కాదు |
| సర్వీస్/అడ్మిన్ కీలు | హోస్ట్ చేయబడిన డేటాబేస్పై యాక్సెస్ నియమాలను దాటవేసే కీలు | ఎప్పుడూ కాదు — అత్యంత సున్నితమైనవిగా భావించండి |
ఏ రకమో మీకు తెలియకపోతే, ప్రొవైడర్ డాక్యుమెంటేషన్ తనిఖీ చేయండి. సందేహం ఉంటే, దాన్ని సీక్రెట్గా భావించండి.
అడుగు 1: కీలను కోడ్లో కాకుండా సీక్రెట్లుగా నిల్వ చేయండి
కీలు మీ హోస్ట్ యొక్క ఎన్విరాన్మెంట్ వేరియబుల్స్ లేదా సీక్రెట్స్ సెట్టింగ్లలో ఉండాలి. మీ కోడ్ వాటిని రన్టైమ్లో పేరుతో చదువుతుంది (ఉదాహరణకు process.env.OPENAI_API_KEY), కాబట్టి విలువ మీ ఫైళ్లలో ఎప్పుడూ కనిపించదు. నేపథ్యం కోసం, ఎన్విరాన్మెంట్ వేరియబుల్స్ మరియు సీక్రెట్స్ అంటే ఏమిటి చూడండి.
కోడ్ నుంచి ప్రతి API కీని ఎన్విరాన్మెంట్ వేరియబుల్స్లోకి తరలించు. మీరు కనుగొన్న ప్రతి కీని, అది ఏ ఫైల్లో ఉంది, మరియు మీరు ఉపయోగించిన వేరియబుల్ పేరు జాబితా చేయి. విలువలు చూపించవద్దు.
తర్వాత ఏదీ మిగలలేదని తనిఖీ చేయండి:
కాన్ఫిగ్ ఫైళ్లు మరియు ఏవైనా .env ఫైళ్లతో సహా మొత్తం ప్రాజెక్ట్ను, API కీ లాగా కనిపించే దేనికోసమైనా సెర్చ్ చేయి. ఫైల్ మరియు లైన్ రిపోర్ట్ చేయి, విలువ కాదు.
అడుగు 2: సీక్రెట్ కీలను సర్వర్లో మాత్రమే ఉపయోగించండి
ఇది అత్యంత ముఖ్యమైన నియమం. బ్రౌజర్ స్వీకరించిన దేన్నైనా సందర్శకుడు చదవగలడు — పేజీ సోర్స్ మరియు JavaScript ఫైళ్లు అన్నీ డెవలపర్ టూల్స్లో కనిపిస్తాయి.
కాబట్టి యాప్కు OpenAI ను కాల్ చేయాల్సి వస్తే, బ్రౌజర్ మీ సర్వర్ను కాల్ చేయాలి, మరియు మీ సర్వర్ కీతో OpenAI ను కాల్ చేస్తుంది. కీ ఎప్పుడూ సర్వర్ను విడిచి వెళ్లదు.
చాట్ ఫీచర్ బ్రౌజర్ నుంచి నేరుగా OpenAI ను కాల్ చేస్తుంది. ఆ కాల్ను సర్వర్ API రూట్కు తరలించు, అది ఎన్విరాన్మెంట్ నుంచి OPENAI_API_KEY ను చదవాలి. బ్రౌజర్ మా రూట్ను మాత్రమే కాల్ చేయాలి. ఆ రూట్కు లాగిన్ అవసరం చేయి.
ఫ్రంటెండ్ ఫ్రేమ్వర్క్లలో ఒక సాధారణ ఉచ్చు గురించి జాగ్రత్త: పబ్లిక్ ప్రిఫిక్స్ ఉన్న వేరియబుల్స్ — Vite లో VITE_, Next.js లో NEXT_PUBLIC_ — ఉద్దేశపూర్వకంగా బ్రౌజర్ కోడ్లోకి నిర్మించబడతాయి. ఆ ప్రిఫిక్స్లలో ఒకటి ఉన్న సీక్రెట్ కీ బహిర్గతమవుతుంది, అది “ఎన్విరాన్మెంట్ వేరియబుల్లో” ఉన్నప్పటికీ.
అడుగు 3: ఏదీ లీక్ కాలేదని పరీక్షించండి
పని చేసిందని నమ్మకండి — లైవ్ సైట్ను తనిఖీ చేయండి:
- బ్రౌజర్లో పబ్లిష్ చేసిన యాప్ను తెరవండి.
- డెవలపర్ టూల్స్ తెరవండి, తర్వాత Sources లేదా Network ట్యాబ్.
- ప్రతి సీక్రెట్ కీ యొక్క మొదటి అక్షరాల కోసం ఫైళ్లంతా సెర్చ్ చేయండి (ఉదాహరణకు
sk_లేదాsk-). - యాప్ చేసే నెట్వర్క్ రిక్వెస్ట్లను తనిఖీ చేయండి. బ్రౌజర్ నుంచి నేరుగా చెల్లింపు AI ప్రొవైడర్కు వెళ్లే రిక్వెస్ట్ ఒక ప్రమాద సూచిక.
మీరు సీక్రెట్ కీని కనుగొంటే, దాన్ని సర్వర్కు తరలించండి (అడుగు 2) మరియు రొటేట్ చేయండి (అడుగు 6), ఎందుకంటే అది ఇప్పటికే బహిరంగంగా ఉంది.
అడుగు 4: ప్రతి కీ ఏమి చేయగలదో పరిమితం చేయండి
చాలా ప్రొవైడర్లు కీని పరిమితం చేయడానికి అనుమతిస్తారు:
- స్కోప్డ్ లేదా పరిమితం చేసిన కీలు మీ యాప్కు అవసరమైనది మాత్రమే చేయగలవు. ఉదాహరణకు Stripe నిర్దిష్ట అనుమతులతో పరిమితం చేసిన కీలకు మద్దతు ఇస్తుంది.
- డొమైన్ లేదా IP పరిమితులు పబ్లిక్గా ఉండాల్సిన కీల కోసం, మ్యాప్స్ కీల వంటివి.
- యాప్ మరియు ఎన్విరాన్మెంట్ వారీగా వేరు కీలు, తద్వారా ఒక లీక్ అన్నింటినీ బహిర్గతం చేయదు, మరియు ఒకదాన్ని రద్దు చేస్తే మిగతావి విరగవు.
- నిర్మిస్తున్నప్పుడు టెస్ట్ కీలు, లైవ్ కీలు ప్రచురించిన యాప్లో మాత్రమే.
అడుగు 5: నష్టానికి పైకప్పు ఉంచండి
బాగా రక్షించబడిన కీని కూడా మీ స్వంత యాప్ ద్వారా దుర్వినియోగం చేయవచ్చు — ఉదాహరణకు, ఎవరైనా మీ AI ఫీచర్ను వేల సార్లు స్క్రిప్ట్ చేయడం.
- ప్రతి చెల్లింపు ప్రొవైడర్ వద్ద స్పెండింగ్ లిమిట్లు లేదా అలర్ట్లు సెట్ చేయండి.
- ప్రతి కాల్కు డబ్బు ఖర్చయ్యే ఏ ఫీచర్కైనా లాగిన్ అవసరం చేయండి.
- ప్రతి-యూజర్ రేట్ లిమిట్ జోడించండి. రేట్ లిమిటింగ్ అంటే ఏమిటి చూడండి.
/api/chat కు ప్రతి యూజర్కు గంటకు 30 AI రిక్వెస్ట్ల పరిమితి జోడించు. పరిమితి చేరుకున్నప్పుడు స్పష్టమైన సందేశం ఇవ్వు. లాగిన్ కాని యూజర్ల రిక్వెస్ట్లను తిరస్కరించు.
అడుగు 6: లీక్ అయిన కీలను రొటేట్ చేయండి
సీక్రెట్ కీ ఎక్కడో కనిపించకూడని చోట కనిపిస్తే — చాట్ మెసేజ్, కమిట్, స్క్రీన్షాట్, సపోర్ట్ టికెట్, బ్రౌజర్ కోడ్ — అది రాజీపడిందని భావించండి.
- ప్రొవైడర్ వద్ద కొత్త కీ సృష్టించండి.
- మీ యాప్ సెట్టింగ్లలో సీక్రెట్ను అప్డేట్ చేయండి.
- లైవ్ యాప్ కొత్త కీని ఉపయోగించేలా రీడిప్లాయ్ లేదా మళ్లీ పబ్లిష్ చేయండి.
- ప్రొవైడర్ వద్ద పాత కీని తొలగించండి.
- మీరు గుర్తించని కార్యకలాపం కోసం ప్రొవైడర్ వినియోగ లాగ్లను తనిఖీ చేయండి.
చాట్ మెసేజ్ లేదా Git కమిట్ను తొలగించడం సరిపోదు. Git హిస్టరీ పాత వెర్షన్లను ఉంచుతుంది, మరియు బహిరంగమైన దేన్నైనా ఇప్పటికే కాపీ చేసి ఉండవచ్చు.
సాధారణ తప్పులు
- ప్రాంప్ట్లో కీని పేస్ట్ చేయడం. అది ఇప్పుడు చాట్ హిస్టరీలో ఉంది. బదులుగా సీక్రెట్స్ ఫారమ్ ఉపయోగించండి.
- సీక్రెట్ వేరియబుల్కు పబ్లిక్ ప్రిఫిక్స్.
VITE_OPENAI_API_KEYకీని ప్రతి సందర్శకుడికి పంపుతుంది. - .env ఫైల్ను కమిట్ చేయడం. మొదటి పుష్కు ముందు అది
.gitignoreలో ఉందని నిర్ధారించుకోండి. - అన్ని చోట్లా ఒకే కీ. టెస్ట్ మరియు లైవ్, అలాగే ప్రతి యాప్ కోసం వేరు కీలు ఉపయోగించండి.
- స్పెండింగ్ లిమిట్ లేకపోవడం. లీక్ అయిన లేదా దుర్వినియోగమైన కీకి పరిమితి లేకపోతే, మీరు గమనించకముందే పెద్ద బిల్లు రావచ్చు.
- రొటేట్ చేయకుండా దాచడం. ఒక కీ బహిర్గతమైతే, కొత్త కీ మాత్రమే దాన్ని సరిచేస్తుంది.
- స్క్రీన్షాట్లలో కీలు. సహాయం కోసం పంచుకునే ముందు సెట్టింగ్ పేజీలను కత్తిరించండి లేదా బ్లర్ చేయండి.
చెక్లిస్ట్
- ప్రతి కీ సీక్రెట్ లేదా ఎన్విరాన్మెంట్ వేరియబుల్గా ఉంది, కోడ్లో కాదు.
- ఏ .env ఫైల్ లేదా కీ Git కు కమిట్ కాలేదు.
- సీక్రెట్ కీలు సర్వర్-వైపు కోడ్లో మాత్రమే ఉపయోగించబడతాయి.
- ఏ సీక్రెట్ వేరియబుల్కూ
VITE_లేదాNEXT_PUBLIC_వంటి పబ్లిక్ ప్రిఫిక్స్ లేదు. - లైవ్ సైట్ JavaScript లో ప్రతి కీ ప్రిఫిక్స్ కోసం సెర్చ్ చేశాను మరియు ఏమీ కనుగొనలేదు.
- ప్రొవైడర్ అనుమతిస్తే కీలు స్కోప్ చేయబడ్డాయి లేదా పరిమితం చేయబడ్డాయి.
- టెస్ట్ మరియు లైవ్ కీలు వేరుగా ఉన్నాయి.
- చెల్లింపు ఫీచర్లకు లాగిన్ అవసరం మరియు ప్రతి-యూజర్ పరిమితులు ఉన్నాయి.
- ప్రతి చెల్లింపు ప్రొవైడర్కు స్పెండ్ క్యాప్ లేదా అలర్ట్ ఉంది.
- ప్రతి కీని ఎలా రొటేట్ చేయాలో నాకు తెలుసు, మరియు ఎప్పుడైనా బహిర్గతమైన ప్రతి కీ రొటేట్ చేయబడింది.
Mythex లో కీలను సురక్షితంగా ఉంచడం
Mythex కీలను మీ కోడ్ మరియు చాట్ నుంచి రెండు మార్గాల్లో దూరంగా ఉంచుతుంది:
- సీక్రెట్స్ రిక్వెస్ట్ కార్డ్. ఏజెంట్కు కీ అవసరమైనప్పుడు, అది చాట్లో ఒక కార్డ్ చూపిస్తుంది, అక్కడ మీరు మెసేజ్ బాక్స్లో కాకుండా ఫారమ్ ఫీల్డ్లలో విలువను నమోదు చేస్తారు, మరియు అది ప్రాజెక్ట్ సీక్రెట్గా నిల్వ అవుతుంది. చాట్లో సీక్రెట్స్ చూడండి.
- ప్రాజెక్ట్ సెట్టింగ్లు → Secrets, లేదా చాట్లో
/secrets, మీరే కీలను జోడించడానికి లేదా మార్చడానికి. ఎన్విరాన్మెంట్ వేరియబుల్స్ మరియు సీక్రెట్స్ చూడండి.
ప్రచురించిన యాప్ కోసం సీక్రెట్ మార్చిన తర్వాత, లైవ్ యాప్ దాన్ని పికప్ చేయడానికి మళ్లీ పబ్లిష్ చేయండి. ఎక్స్పోర్ట్ చేసిన ప్రాజెక్ట్లలో సీక్రెట్స్ ఉండవు, కాబట్టి కోడ్ ఎక్కడ రన్ చేసినా వాటిని మళ్లీ జోడించండి. ఒక కీ ఎప్పుడైనా చాట్లో కనిపిస్తే, ప్రొవైడర్ వద్ద దాన్ని రొటేట్ చేయండి.
ప్రయోగానికి ముందు భద్రతా పాస్లో మిగిలిన భాగం కోసం, AI తో నిర్మించిన యాప్ల కోసం భద్రతా చెక్లిస్ట్ ద్వారా వెళ్లండి. AI ఫీచర్లు జోడిస్తుంటే, LLM APIs ను ఎలా ఉపయోగించాలి కీలు మరియు ఖర్చుల గురించి మరింత లోతుగా కవర్ చేస్తుంది.
ప్రశ్నలు
ఫ్రంటెండ్ కోడ్లో API కీ పెట్టడం సురక్షితమా?
ఆ కీని ప్రొవైడర్ బహిరంగంగా ఉండేలా రూపొందించినప్పుడు మాత్రమే, ఉదాహరణకు Stripe యొక్క పబ్లిషబుల్ కీ లేదా మీ డొమైన్కు పరిమితం చేయబడిన మ్యాప్స్ కీ. డబ్బు ఖర్చు చేయగల లేదా ప్రైవేట్ డేటా చదవగల ఏ కీ అయినా సర్వర్లోనే ఉండాలి, ఎందుకంటే బ్రౌజర్కు పంపిన దేన్నైనా ఎవరైనా చదవగలరు.
API కీని చాట్ లేదా పబ్లిక్ రిపోలో పేస్ట్ చేస్తే ఏమి చేయాలి?
రొటేట్ చేయండి: ప్రొవైడర్ వద్ద కొత్త కీ సృష్టించండి, మీ యాప్ సీక్రెట్లను అప్డేట్ చేయండి, మళ్లీ పబ్లిష్ చేయండి, తర్వాత పాత కీని తొలగించండి. మెసేజ్ లేదా కమిట్ను తొలగించడం సరిపోదు, ఎందుకంటే కాపీలు ఇప్పటికే ఉండవచ్చు.
API కీలను ఎక్కడ నిల్వ చేయాలి?
మీ హోస్ట్ యొక్క ఎన్విరాన్మెంట్ వేరియబుల్స్ లేదా సీక్రెట్స్ సెట్టింగ్లలో, రన్టైమ్లో సర్వర్-వైపు కోడ్ చదివేలా. వాటిని సోర్స్ ఫైళ్లలో రాయకూడదు, Git కు కమిట్ చేయకూడదు, లేదా స్క్రీన్షాట్లలో చేర్చకూడదు.
నా వెబ్సైట్లో API కీ బహిర్గతమైందో ఎలా తెలుసుకోవాలి?
మీ లైవ్ సైట్ తెరవండి, పేజీ సోర్స్ మరియు JavaScript ఫైళ్లను బ్రౌజర్ డెవలపర్ టూల్స్లో చూడండి, మరియు కీ ప్రారంభ అక్షరాలను సెర్చ్ చేయండి. అది కనిపిస్తే, అది బహిర్గతమైంది మరియు సర్వర్కు తరలించి రొటేట్ చేయాలి.