Node.js এবং MySQL প্রজেক্টে API সুরক্ষিত করা
প্রতিরোধ করেAPI হল আধুনিক ওয়েব এবং মোবাইল অ্যাপ্লিকেশনগুলির মেরুদণ্ড৷ Node.js এবং MySQL দিয়ে API তৈরি করার সময়, নিরাপত্তাকে অবশ্যই শীর্ষ অগ্রাধিকার দিতে হবে। এই নির্দেশিকাটি আপনার APIগুলিকে সুরক্ষিত করতে আপনাকে সাহায্য করার জন্য অপরিহার্য সেরা অনুশীলন এবং কোড উদাহরণগুলি কভার করে৷
API নিরাপত্তা আর্কিটেকচার
এই চিত্রটি গেটওয়ে, WAF, প্রমাণীকরণ, এবং ডাটাবেস সুরক্ষা সহ API সুরক্ষার জন্য একটি স্তরযুক্ত পদ্ধতি দেখায়।
API গেটওয়ে এবং WAF
একটি API গেটওয়ে এবং ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF) ব্যবহার করুন নিরাপত্তা কেন্দ্রীভূত করতে, হার সীমিত করতে এবং বৈধতার অনুরোধ করুন৷ এটি আপনার Node.js অ্যাপে পৌঁছানোর আগে দূষিত ট্র্যাফিক ব্লক করতে সাহায্য করে৷
ব্যবহারকারী থেকে DB ফ্লো
এই চিত্রটি প্রতিটি ধাপে প্রমাণীকরণ এবং অনুমোদন পরীক্ষা সহ ব্যবহারকারী থেকে ডাটাবেসে নিরাপদ প্রবাহ দেখায়।
1. HTTPS সব জায়গায়
ব্যবহার করুনসর্বদা ট্রানজিটে ডেটা এনক্রিপ্ট করতে HTTPS এর উপর আপনার API পরিবেশন করুন৷letsencryptবা একটি বাণিজ্যিক SSL শংসাপত্র ব্যবহার করুন৷
2. প্রমাণীকরণ এবং অনুমোদন
- JWT (JSON ওয়েব টোকেন):রাষ্ট্রহীন প্রমাণীকরণের জন্য JWT ব্যবহার করুন। লগইনে টোকেন ইস্যু করুন এবং প্রতিটি অনুরোধে সেগুলি যাচাই করুন।
- ভূমিকা-ভিত্তিক অ্যাক্সেস কন্ট্রোল (RBAC):ব্যবহারকারীর ভূমিকার উপর ভিত্তি করে সংবেদনশীল শেষ পয়েন্টগুলিতে অ্যাক্সেস সীমাবদ্ধ করুন৷
// Example: JWT middleware
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}3. SQL ইনজেকশন
SQL ইনজেকশন প্রতিরোধ করতে সর্বদা প্যারামিটারাইজড কোয়েরি বা ORM লাইব্রেরি (যেমন সিক্যুয়েলাইজ বা Knex) ব্যবহার করুন।
// Using mysql2 with placeholders
const [rows] = await db.execute('SELECT * FROM users WHERE id = ?', [userId]);4. ইনপুট বৈধকরণ এবং স্যানিটাইজেশন
express-validatorবাjoiএর মত লাইব্রেরি ব্যবহার করে সমস্ত ইনকামিং ডেটা যাচাই ও স্যানিটাইজ করুন।
5. সুরক্ষিত সংবেদনশীল ডেটা
- কখনও প্লেইন-টেক্সট পাসওয়ার্ড সংরক্ষণ করবেন না।
bcryptদিয়ে সর্বদা হ্যাশ করুন। - স্টোরের গোপনীয়তা (DB শংসাপত্র, JWT গোপনীয়তা) পরিবেশ ভেরিয়েবলে, কোডে নয়।
6. রেট লিমিটিং এবং থ্রটলিং
express-rate-limit-এর মতো রেট লিমিটিং মিডলওয়্যার ব্যবহার করে আপনার APIকে ব্রুট-ফোর্স এবং DDoS আক্রমণ থেকে রক্ষা করুন।
7. লগিং এবং মনিটরিং
সমস্ত প্রমাণীকরণ প্রচেষ্টা এবং ত্রুটিগুলি লগ করুন৷ সন্দেহজনক কার্যকলাপ সনাক্ত করতে নিরীক্ষণ সরঞ্জাম ব্যবহার করুন.
8. নির্ভরতা আপডেট রাখুন
নিয়মিতভাবে Node.js, MySQL, এবং সমস্ত নির্ভরতাগুলি পরিচিত দুর্বলতাগুলি প্যাচ করতে আপডেট করুন৷