તમારી એપમાં API keys કેવી રીતે સુરક્ષિત રાખવી
API keys સુરક્ષિત રાખવા માટે, તેમને તમારા હોસ્ટ પર સિક્રેટ્સ અથવા એન્વાયર્નમેન્ટ વેરિયેબલ્સ તરીકે સાચવો, ફક્ત સર્વર-સાઇડ કોડમાં વાપરો, અને તેમને ક્યારેય ચેટ, કોડ ફાઇલો, સ્ક્રીનશોટ કે Git રિપોઝિટરીમાં પેસ્ટ ન કરો. દરેક key ને જરૂરી સૌથી ઓછી પરવાનગી આપો, પ્રોવાઇડર પર ખર્ચ મર્યાદા સેટ કરો, અને જો કોઈ key ક્યારેય લીક થાય, તો તેને ફક્ત છુપાવવાને બદલે બદલો — નવી બનાવો અને જૂની ડિલીટ કરો.
API key એ સેવા માટેનો પાસવર્ડ છે. તમારી OpenAI key કોઈને તમારા પૈસા AI પર ખર્ચવા દે છે; તમારી Stripe સિક્રેટ key કોઈને રિફંડ આપવા દે છે; તમારી ઇમેઇલ પ્રોવાઇડર key કોઈને તમારા નામે મેઇલ મોકલવા દે છે. AI એપ બિલ્ડર્સ તેમને જોડવામાં સારા છે, પણ તે ક્યાં પહોંચે છે તે વિશે હંમેશાં કાળજી રાખતા નથી, એટલે આ ગાઇડ તેમને સુરક્ષિત રાખવાનું અને તપાસવાનું કેવી રીતે તે આવરી લે છે.
જાહેર keys વિરુદ્ધ સિક્રેટ keys
દરેક key સિક્રેટ નથી. તફાવત જાણવાથી તમે ખોટી key વિશે ગભરાશો નહીં અને સાચી key ને અવગણશો નહીં.
| પ્રકાર | ઉદાહરણો | શું તે બ્રાઉઝરમાં હોઈ શકે? |
|---|---|---|
| Publishable / જાહેર keys | Stripe pk_… key, ફક્ત તમારા ડોમેન પર મર્યાદિત maps key, કેટલાક analytics IDs | હા — તે માટે બનાવેલી |
| સિક્રેટ keys | Stripe sk_…, OpenAI અને Anthropic keys, ઇમેઇલ પ્રોવાઇડર keys, ડેટાબેઝ પાસવર્ડ | ક્યારેય નહીં |
| સર્વિસ/એડમિન keys | હોસ્ટેડ ડેટાબેઝ પરના access નિયમોને બાયપાસ કરતી keys | ક્યારેય નહીં — સૌથી સંવેદનશીલ ગણો |
જો તમને ખાતરી ન હોય કે key કયા પ્રકારની છે, તો પ્રોવાઇડરના દસ્તાવેજો તપાસો. શંકા હોય ત્યારે, તેને સિક્રેટ ગણો.
પગલું 1: keys કોડમાં નહીં, સિક્રેટ્સ તરીકે સાચવો
Keys તમારા હોસ્ટની એન્વાયર્નમેન્ટ વેરિયેબલ્સ અથવા સિક્રેટ્સ સેટિંગ્સમાં હોવી જોઈએ. તમારો કોડ રન ટાઇમે તેમને નામથી વાંચે છે (ઉદાહરણ તરીકે process.env.OPENAI_API_KEY), એટલે મૂલ્ય ક્યારેય તમારી ફાઇલોમાં દેખાતું નથી. પૃષ્ઠભૂમિ માટે, એન્વાયર્નમેન્ટ વેરિયેબલ્સ અને સિક્રેટ્સ શું છે જુઓ.
કોડમાંથી દરેક API key બહાર કાઢીને એન્વાયર્નમેન્ટ વેરિયેબલ્સમાં મૂકો. તમને મળેલી દરેક key, તે કઈ ફાઇલમાં હતી, અને તમે જે વેરિયેબલ નામ વાપર્યું તેની યાદી બનાવો. મને મૂલ્યો બતાવશો નહીં.
પછી ચકાસો કે કંઈ બાકી નથી:
કન્ફિગ ફાઇલો અને કોઈ પણ .env ફાઇલો સહિત, આખા પ્રોજેક્ટમાં API key કે પાસવર્ડ જેવું લાગે તે શોધો. ફાઇલ અને લાઇન જણાવો, મૂલ્ય નહીં.
પગલું 2: સિક્રેટ keys ફક્ત સર્વર પર વાપરો
આ સૌથી મહત્ત્વનો નિયમ છે. બ્રાઉઝરને જે મળે છે તે મુલાકાતી વાંચી શકે છે — પેજ સોર્સ અને JavaScript ફાઇલો બધી ડેવલપર ટૂલ્સમાં દેખાય છે.
તો જો એપને OpenAI ને કૉલ કરવાની જરૂર હોય, તો બ્રાઉઝરે તમારા સર્વરને કૉલ કરવો જોઈએ, અને તમારું સર્વર key વડે OpenAI ને કૉલ કરે છે. key ક્યારેય સર્વર છોડતી નથી.
ચેટ ફીચર સીધું બ્રાઉઝરમાંથી OpenAI ને કૉલ કરે છે. તે કૉલને સર્વર API રૂટમાં ખસેડો જે એન્વાયર્નમેન્ટમાંથી OPENAI_API_KEY વાંચે. બ્રાઉઝરે ફક્ત અમારા રૂટને કૉલ કરવો જોઈએ. રૂટ માટે લૉગ ઇન જરૂરી બનાવો.
ફ્રન્ટએન્ડ ફ્રેમવર્કમાં એક સામાન્ય જાળ પર ધ્યાન રાખો: જાહેર પ્રીફિક્સવાળા વેરિયેબલ્સ — Vite માં VITE_, Next.js માં NEXT_PUBLIC_ — જાણીજોઈને બ્રાઉઝર કોડમાં બિલ્ડ થાય છે. આવા પ્રીફિક્સવાળી સિક્રેટ key ખુલ્લી થઈ જાય છે, ભલે તે "એન્વાયર્નમેન્ટ વેરિયેબલમાં" હોય.
પગલું 3: કંઈ લીક થતું નથી તે ટેસ્ટ કરો
કામ કર્યું છે એમ માનશો નહીં — લાઇવ સાઇટ તપાસો:
- બ્રાઉઝરમાં પબ્લિશ થયેલી એપ ખોલો.
- ડેવલપર ટૂલ્સ ખોલો, પછી Sources અથવા Network ટેબ.
- દરેક સિક્રેટ keyના પહેલા અક્ષરો (ઉદાહરણ તરીકે
sk_અથવાsk-) ફાઇલોમાં શોધો. - એપ કરે છે તે નેટવર્ક વિનંતીઓ તપાસો. બ્રાઉઝરમાંથી સીધી પેઇડ AI પ્રોવાઇડરને જતી વિનંતી ખતરાની નિશાની છે.
જો તમને સિક્રેટ key મળે, તો તેને સર્વર પર ખસેડો (પગલું 2) અને બદલો (પગલું 6), કારણ કે તે પહેલેથી જાહેર થઈ ચૂકી હતી.
પગલું 4: દરેક key શું કરી શકે તે મર્યાદિત કરો
ઘણા પ્રોવાઇડર તમને key મર્યાદિત કરવા દે છે:
- Scoped અથવા restricted keys જે ફક્ત તમારી એપને જોઈએ તે જ કરી શકે. ઉદાહરણ તરીકે, Stripe ચોક્કસ પરવાનગીવાળી restricted keys સપોર્ટ કરે છે.
- જાહેર રહેવી જ જોઈએ તેવી keys માટે ડોમેન અથવા IP મર્યાદા, જેમ કે maps keys.
- દરેક એપ અને દરેક એન્વાયર્નમેન્ટ માટે અલગ keys, જેથી એક લીકથી બધું ખુલ્લું ન થાય, અને એક રદ કરવાથી બીજી તૂટે નહીં.
- બનાવતી વખતે ટેસ્ટ keys, અને લાઇવ keys ફક્ત પબ્લિશ થયેલી એપમાં.
પગલું 5: નુકસાન પર મર્યાદા મૂકો
સારી રીતે સુરક્ષિત key પણ તમારી પોતાની એપ દ્વારા દુરુપયોગ થઈ શકે છે — ઉદાહરણ તરીકે, કોઈ તમારા AI ફીચરને હજારો વાર સ્ક્રિપ્ટ કરે.
- દરેક પેઇડ પ્રોવાઇડર પર ખર્ચ મર્યાદા અથવા એલર્ટ સેટ કરો.
- દરેક કૉલ દીઠ પૈસા ખર્ચતા કોઈ પણ ફીચર માટે લૉગ ઇન જરૂરી બનાવો.
- યુઝર દીઠ રેટ લિમિટ ઉમેરો. જુઓ રેટ લિમિટિંગ શું છે.
/api/chat પર દરેક યુઝર માટે કલાકે 30 AI વિનંતીઓની મર્યાદા ઉમેરો. મર્યાદા પહોંચે ત્યારે સ્પષ્ટ સંદેશ પાછો આપો. જે યુઝરો લૉગ ઇન નથી તેમની વિનંતીઓ નકારો.
પગલું 6: લીક થયેલી keys બદલો
જો સિક્રેટ key ક્યાંક દેખાય જ્યાં ન હોવી જોઈએ — ચેટ મેસેજ, કમિટ, સ્ક્રીનશોટ, સપોર્ટ ટિકિટ, બ્રાઉઝર કોડ — તો તેને સાથે ચેડાં થયેલી ગણો.
- પ્રોવાઇડર પર નવી key બનાવો.
- તમારી એપની સેટિંગ્સમાં સિક્રેટ અપડેટ કરો.
- લાઇવ એપ નવી key વાપરે તે માટે ફરી ડિપ્લોય અથવા પબ્લિશ કરો.
- પ્રોવાઇડર પર જૂની key ડિલીટ કરો.
- તમે ઓળખતા ન હો તેવી પ્રવૃત્તિ માટે પ્રોવાઇડરના વપરાશ લૉગ તપાસો.
ચેટ મેસેજ અથવા Git કમિટ ડિલીટ કરવું પૂરતું નથી. Git ઇતિહાસ જૂના વર્ઝન રાખે છે, અને કંઈ પણ જાહેર હોય તે પહેલેથી કોપી થઈ ગયું હોઈ શકે છે.
સામાન્ય ભૂલો
- પ્રોમ્પ્ટમાં key પેસ્ટ કરવી. તે હવે ચેટ ઇતિહાસમાં છે. તેના બદલે સિક્રેટ્સ ફોર્મ વાપરો.
- સિક્રેટ વેરિયેબલ પર જાહેર પ્રીફિક્સ.
VITE_OPENAI_API_KEYદરેક મુલાકાતીને key મોકલે છે. .envફાઇલ કમિટ કરવી. પહેલા પુશ પહેલાં ખાતરી કરો કે તે.gitignoreમાં છે.- બધે એક જ key. ટેસ્ટ અને લાઇવ માટે, અને દરેક એપ માટે અલગ keys વાપરો.
- કોઈ ખર્ચ મર્યાદા નહીં. લીક કે દુરુપયોગ થયેલી મર્યાદા વિનાની key તમે ધ્યાન આપો તે પહેલાં મોટું બિલ બનાવી શકે છે.
- બદલવાને બદલે છુપાવવું. એકવાર key ખુલ્લી થઈ જાય, પછી માત્ર નવી key જ તેને ઠીક કરે છે.
- સ્ક્રીનશોટમાં keys. મદદ માટે શેર કરતા પહેલાં સેટિંગ્સ પેજને ક્રોપ અથવા બ્લર કરો.
ચેકલિસ્ટ
- દરેક key સિક્રેટ અથવા એન્વાયર્નમેન્ટ વેરિયેબલ તરીકે સંગ્રહાયેલી છે, કોડમાં નહીં.
- કોઈ .env ફાઇલ અથવા key Git માં કમિટ થયેલી નથી.
- સિક્રેટ keys ફક્ત સર્વર-સાઇડ કોડમાં વપરાય છે.
- કોઈ સિક્રેટ વેરિયેબલ
VITE_અથવાNEXT_PUBLIC_જેવો જાહેર પ્રીફિક્સ વાપરતો નથી. - મેં લાઇવ સાઇટના JavaScript માં દરેક keyના પ્રીફિક્સ શોધ્યા અને કંઈ મળ્યું નહીં.
- પ્રોવાઇડર મંજૂરી આપે ત્યાં keys scoped અથવા restricted છે.
- ટેસ્ટ અને લાઇવ keys અલગ છે.
- પેઇડ ફીચર્સ માટે લૉગ ઇન જરૂરી છે અને યુઝર દીઠ મર્યાદા છે.
- દરેક પેઇડ પ્રોવાઇડર પર ખર્ચ મર્યાદા અથવા એલર્ટ છે.
- હું દરેક key કેવી રીતે બદલવી તે જાણું છું, અને જે કોઈ key ક્યારેય ખુલ્લી થઈ હતી તે બદલાઈ ગઈ છે.
Mythex પર keys સુરક્ષિત રાખવી
Mythex બે રીતે keys ને તમારા કોડ અને ચેટથી દૂર રાખે છે:
- સિક્રેટ્સ વિનંતી કાર્ડ. જ્યારે એજન્ટને key જોઈએ, ત્યારે તે ચેટમાં એક કાર્ડ બતાવે છે જ્યાં તમે ફોર્મ ફીલ્ડ્સમાં મૂલ્ય દાખલ કરો છો, મેસેજ બોક્સમાં નહીં, અને તે પ્રોજેક્ટ સિક્રેટ તરીકે સંગ્રહાય છે. જુઓ ચેટમાં સિક્રેટ્સ.
- પ્રોજેક્ટ સેટિંગ્સ → Secrets, અથવા ચેટમાં
/secrets, જ્યાં તમે જાતે keys ઉમેરી કે બદલી શકો. જુઓ એન્વાયર્નમેન્ટ વેરિયેબલ્સ અને સિક્રેટ્સ.
પબ્લિશ થયેલી એપ માટે સિક્રેટ બદલ્યા પછી, લાઇવ એપ તેને લે તે માટે ફરી પબ્લિશ કરો. એક્સપોર્ટ થયેલા પ્રોજેક્ટ્સમાં સિક્રેટ્સ શામેલ હોતા નથી, એટલે જ્યાં પણ આગળ કોડ ચલાવો ત્યાં તેમને ફરી ઉમેરો. જો કોઈ key ક્યારેય ચેટમાં દેખાય, તો પ્રોવાઇડર પર તેને બદલો.
લૉન્ચ પહેલાંના બાકીના સુરક્ષા પગલાં માટે, AI થી બનેલી એપ માટે સુરક્ષા ચેકલિસ્ટ પર કામ કરો. જો તમે AI ફીચર્સ ઉમેરી રહ્યા હો, તો LLM API કેવી રીતે વાપરવી keys અને ખર્ચ વિશે વધુ ઊંડાણથી આવરી લે છે.
પ્રશ્નો
ફ્રન્ટએન્ડ કોડમાં API key મૂકવી સુરક્ષિત છે?
ફક્ત ત્યારે જ, જો પ્રોવાઇડરે તે key જાહેર રાખવા માટે બનાવી હોય, જેમ કે Stripe ની publishable key અથવા ફક્ત તમારા ડોમેન પર મર્યાદિત maps key. પૈસા ખર્ચી શકે અથવા ખાનગી ડેટા વાંચી શકે તેવી કોઈ પણ key સર્વર પર જ રહેવી જોઈએ, કારણ કે બ્રાઉઝરને મોકલેલું કંઈ પણ કોઈ પણ વાંચી શકે છે.
જો મેં API key ચેટમાં અથવા જાહેર રિપોમાં પેસ્ટ કરી હોય તો શું કરવું?
તેને બદલો: પ્રોવાઇડર પર નવી key બનાવો, તમારી એપની સિક્રેટ્સ અપડેટ કરો, ફરી પબ્લિશ કરો, પછી જૂની key ડિલીટ કરો. મેસેજ અથવા કમિટ ડિલીટ કરવું પૂરતું નથી, કારણ કે નકલો પહેલેથી હોઈ શકે છે.
API keys ક્યાં સંગ્રહવી જોઈએ?
તમારા હોસ્ટની એન્વાયર્નમેન્ટ વેરિયેબલ્સ અથવા સિક્રેટ્સ સેટિંગ્સમાં, જે રન ટાઇમે સર્વર-સાઇડ કોડ વાંચે છે. તેમને સોર્સ ફાઇલોમાં લખવી, Git માં કમિટ કરવી, અથવા સ્ક્રીનશોટમાં શામેલ કરવી ન જોઈએ.
મારી વેબસાઇટમાં મારી API key ખુલ્લી છે કે નહીં તે કેવી રીતે ખબર પડે?
તમારી લાઇવ સાઇટ ખોલો, પેજ સોર્સ અને બ્રાઉઝરના ડેવલપર ટૂલ્સમાં JavaScript ફાઇલો જુઓ, અને keyની શરૂઆત શોધો. જો તે દેખાય, તો તે ખુલ્લી છે અને તેને સર્વર પર ખસેડીને બદલવી જોઈએ.