எனது பக்கத் திட்டங்களை (Side Projects) பாதுகாப்பிற்காக ஆய்வு செய்தேன் — நான் கண்டறிந்தவை இதோ

சமீபத்தில் எனது அனைத்து பக்கத் திட்டங்களையும் ஆய்வு செய்தேன். எனது FastAPI backends, Telegram bots மற்றும் web apps ஆகியவற்றைச் சரிபார்த்தேன். நான் மிகவும் கவனமாக இருப்பதாக நினைத்தேன்.

நான் தவறாக நினைத்தேன்.

நான் உண்மையில் production-க்கு அனுப்பிய உண்மையான பிழைகளைக் (bugs) கண்டறிந்தேன். இவை வெறும் தத்துவார்த்தமான சிக்கல்கள் அல்ல. வேகமாகச் செயல்பட முயன்றபோது நான் செய்த தவறுகள் இவை.

நான் கண்டறிந்த முக்கிய சிக்கல்களும் அவற்றைச் சரிசெய்யும் முறைகளும் இதோ:

  1. நிபந்தனைக்குட்பட்ட அங்கீகாரம் (Conditional Authentication) ஒரு secret இருந்தால் மட்டுமே API keys-களைச் சரிபார்க்கும் வகையில் நான் குறியீட்டை (code) எழுதியிருந்தேன். எனது environment-இல் அந்த secret-ஐ அமைக்க மறந்துவிட்டால், அந்தச் சரிபார்ப்பு முற்றிலும் தவிர்க்கப்படும். இது எனது API-யை அனைவருக்கும் திறந்து விட்டுவிடும்.
  1. Git வரலாற்றில் சாவிகள் (Keys) கசிதல் எனது Git வரலாற்றில் பழைய API keys-களைக் கண்டறிந்தேன். நான் பின்னர் அவற்றை .env கோப்புகளுக்கு மாற்றிவிட்டேன், ஆனால் Git உங்கள் குறியீட்டின் ஒவ்வொரு பழைய பதிப்பையும் எப்போதும் வைத்திருக்கும்.
  1. மீதமுள்ள Debug Endpoints எனது database configuration மற்றும் system settings ஆகியவற்றைத் தெரியப்படுத்தும் endpoints-களை production-இல் அப்படியே விட்டுவிட்டேன். இவை மேம்படுத்தலின் (development) போது பயனுள்ளதாக இருக்கும், ஆனால் பயன்பாட்டில் இருக்கும்போது ஆபத்தானவை.
  1. விரிவான பிழைச் செய்திகள் (Verbose Error Messages) நான் பயனருக்கு நேரடி system errors-களைத் திருப்பித் தந்து கொண்டிருந்தேன். இந்த பிழைகள் உங்கள் file paths, database வகைகள் மற்றும் library பதிப்புகளை வெளிப்படுத்தும். ஒரு தாக்குதல் நடத்துபவர் (attacker) உங்கள் அமைப்பைத் தாக்க இந்தத் தரவைப் பயன்படுத்தலாம்.
  1. innerHTML மூலம் XSS எனது frontend-இல் பயனர் தரவைக் காண்பிக்க (render) நான் innerHTML-ஐப் பயன்படுத்தினேன். இது தாக்குதல் நடத்துபவர்கள் உங்கள் தளத்தில் ஸ்கிரிப்ட்களை (scripts) புகுத்த அனுமதிக்கிறது.
  1. Rate Limiting இல்லாமை வரம்புகள் இன்றி அதிகச் செலவுமிக்க AI models-களை அழைக்கும் endpoints என்னிடம் இருந்தன. ஒரு பயனர் சில நிமிடங்களிலேயே மிகப்பெரிய கட்டணத்தை ஏற்படுத்த முடியும்.
  1. தளர்வான CORS அமைப்புகள் (Permissive CORS Settings) எனது middleware-இல் allow_origins=["*"] என்பதைப் பயன்படுத்தினேன். இது எந்தவொரு இணையதளமும் உங்கள் API-க்கு கோரிக்கைகளை (requests) அனுப்ப அனுமதிக்கிறது.
  1. கோப்பு கசிவு நான் தற்காலிகக் கோப்புகளை உருவாக்கும் குறியீட்டை எழுதினேன், ஆனால் செயல்முறை செயலிழந்தால் அவற்றை நீக்கத் தவறிவிட்டேன். இந்தத் கோப்புகள் உங்கள் சேவையகத்தில் (server) நிரந்தரமாகத் தங்கிவிடும்.

பாதுகாப்புப் பிரச்சனைகள் அரிதாகவே வேண்டுமென்றே செய்யப்படுபவை. அவை "இதை நான் பிறகு சரிசெய்து கொள்கிறேன்" என்று சொல்வதன் விளைவாகும். அந்த "பிறகு" என்று ஒன்று எப்போதும் வருவதில்லை.

முதல் நாளிலிருந்தே உங்கள் பணிப்பாய்வில் (workflow) பாதுகாப்பை இணைத்துக் கொள்ளுங்கள். உங்கள் குறியீட்டை (code) commit செய்வதற்கு முன்பும், deploy செய்வதற்கு முன்பும் சரிபார்க்கவும்.

மூலம்: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb