𝗜 𝗔𝘂𝗱𝗶𝘁𝗲𝗱 𝗠𝘆 𝗦𝗶𝗱𝗲 𝗣𝗿𝗼𝗷𝗲𝗰𝘁𝘀 𝗳𝗼𝗿 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 — 𝗛𝗲𝗿𝗲 𝗜𝘀 𝗪𝗵𝗮𝘁 𝗜 𝗙𝗼𝘂𝗻𝗱

મેં તાજેતરમાં મારા તમામ સાઇડ પ્રોજેક્ટ્સનું ઓડિટ કર્યું. મેં મારા FastAPI બેકએન્ડ્સ, ટેલિગ્રામ બોટ્સ અને વેબ એપ્સ તપાસ્યા. મને લાગતું હતું કે હું સાવધ હતો.

હું ખોટો હતો.

મને વાસ્તવિક બગ્સ મળ્યા જે મેં ખરેખર પ્રોડક્શનમાં મોકલ્યા હતા. આ કોઈ સૈદ્ધાંતિક સમસ્યાઓ નથી. આ એવી ભૂલો છે જે મેં ઝડપથી કામ કરવાના પ્રયાસમાં કરી હતી.

અહીં મને મળેલી મુખ્ય સમસ્યાઓ અને તેને કેવી રીતે સુધારવી તે છે:

  1. કન્ડિશનલ ઓથેન્ટિકેશન (Conditional Authentication) મેં એવો કોડ લખ્યો હતો જે ફક્ત ત્યારે જ API કી તપાસતો હતો જો કોઈ secret અસ્તિત્વમાં હોય. જો હું મારા એન્વાયરમેન્ટમાં secret સેટ કરવાનું ભૂલી ગયો હોત, તો આ તપાસ સંપૂર્ણપણે રહી જતી. આના કારણે મારી API દરેક માટે ખુલ્લી રહી ગઈ હતી.
  1. Git હિસ્ટ્રીમાં કી લીક થવી મને મારા Git હિસ્ટ્રીમાં જૂની API કી મળી. મેં પછીથી તેને .env ફાઇલોમાં ખસેડી દીધી હતી, પરંતુ Git તમારા કોડનું દરેક જૂનું વર્ઝન હંમેશ માટે સાચવી રાખે છે.
  1. બાકી રહી ગયેલા ડેબગ એન્ડપોઇન્ટ્સ (Debug Endpoints) મેં પ્રોડક્શનમાં એવા એન્ડપોઇન્ટ્સ છોડી દીધા હતા જે મારા ડેટાબેઝ કોન્ફિગરેશન અને સિસ્ટમ સેટિંગ્સ બતાવતા હતા. આ ડેવલપમેન્ટ દરમિયાન ઉપયોગી છે પરંતુ વાસ્તવિક ઉપયોગમાં જોખમી છે.
  1. વિગતવાર એરર મેસેજ (Verbose Error Messages) હું યુઝરને સીધી સિસ્ટમ એરર્સ પરત કરી રહ્યો હતો. આ એરર્સ તમારા ફાઇલ પાથ, ડેટાબેઝ પ્રકાર અને લાઇબ્રેરી વર્ઝન જાહેર કરે છે. એક હુમલાખોર તમારા સિસ્ટમને નિશાન બનાવવા માટે આ ડેટાનો ઉપયોગ કરી શકે છે.
  1. innerHTML દ્વારા XSS મેં મારા ફ્રન્ટએન્ડમાં યુઝર ડેટા રેન્ડર કરવા માટે innerHTML નો ઉપયોગ કર્યો હતો. આ હુમલાખોરોને તમારી સાઇટમાં સ્ક્રિપ્ટ્સ ઇન્જેક્ટ કરવાની મંજૂરી આપે છે.
  1. રેટ લિમિટિંગનો અભાવ (Lack of Rate Limiting) મારી પાસે એવા એન્ડપોઇન્ટ્સ હતા જે મર્યાદા વગર મોંઘા AI મોડલ્સને કોલ કરતા હતા. એક યુઝર મિનિટોમાં મોટું બિલ બનાવી શકે છે.
  1. પરમિસિવ CORS સેટિંગ્સ (Permissive CORS Settings) મેં મારા મિડલવેરમાં allow_origins=["*"] નો ઉપયોગ કર્યો હતો. આ કોઈપણ વેબસાઇટને તમારી API માં વિનંતીઓ કરવા દે છે.
  1. ફાઇલ લીકેજ મેં એવો કોડ લખ્યો હતો જે કામચલાઉ ફાઇલો બનાવતો હતો, પરંતુ જો પ્રોસેસ ક્રેશ થઈ જાય તો તેને ડિલીટ કરવામાં નિષ્ફળ રહ્યો. આ ફાઇલો તમારા સર્વર પર કાયમ માટે રહી જાય છે.

સુરક્ષાના પ્રશ્નો ભાગ્યે જ જાણીજોઈને કરવામાં આવે છે. તેઓ "હું આ પછી સુધારીશ" કહેવાનું પરિણામ છે. પણ તે 'પછી' ક્યારેય આવતું નથી.

પહેલા દિવસથી જ તમારા વર્કફ્લોમાં સુરક્ષાનો સમાવેશ કરો. કોડ commit કરતા પહેલા અને deploy કરતા પહેલા તેને તપાસો.

સ્ત્રોત: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb