Node.js ਅਤੇ MySQL ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ API ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨਾ
ਨੂੰ ਰੋਕਦਾ ਹੈAPIs ਆਧੁਨਿਕ ਵੈੱਬ ਅਤੇ ਮੋਬਾਈਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹਨ। Node.js ਅਤੇ MySQL ਦੇ ਨਾਲ APIs ਬਣਾਉਂਦੇ ਸਮੇਂ, ਸੁਰੱਖਿਆ ਇੱਕ ਪ੍ਰਮੁੱਖ ਤਰਜੀਹ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਗਾਈਡ ਤੁਹਾਡੇ API ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਵਧੀਆ ਅਭਿਆਸਾਂ ਅਤੇ ਕੋਡ ਉਦਾਹਰਨਾਂ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ।
API ਸੁਰੱਖਿਆ ਆਰਕੀਟੈਕਚਰ
ਇਹ ਚਿੱਤਰ API ਸੁਰੱਖਿਆ ਲਈ ਇੱਕ ਪੱਧਰੀ ਪਹੁੰਚ ਦਿਖਾਉਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਗੇਟਵੇ, WAF, ਪ੍ਰਮਾਣਿਕਤਾ, ਅਤੇ ਡਾਟਾਬੇਸ ਸੁਰੱਖਿਆ ਸ਼ਾਮਲ ਹੈ।
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, ਅਤੇ ਸਾਰੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਜਾਣੀਆਂ ਗਈਆਂ ਕਮਜ਼ੋਰੀਆਂ ਨੂੰ ਪੈਚ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ।