giriiş
API güvenliği, kullandığımız veya oluşturduğumuz API'lerin bütünlüğünü korumak anlamına gelir. Günümüzde çoğu şirket, hizmetleri bağlamak ve veri aktarmak için API'leri kullanır. API'nin güvenliği ihlal edilir, açığa çıkar veya saldırıya uğrarsa, veri ihlaline yol açar. Bu nedenle, aktarılan bilgilere dayanarak, uygulamada uygulanması gereken API güvenlik düzeyini değerlendirmemiz gerekir. Bu makalede, yaygın güvenlik sorunlarından kaçınmamıza yardımcı olacak bazı faydalı npm paketlerini tanıtacağım.
1. Kask Kullanımı
Kask.js HTTP başlıklarını korumak için kullanılan bir Node.js modülüdür. Bu modül, Express uygulamalarında kullanılır ve çeşitli HTTP başlıkları ayarlayarak Cross-Site Scripting (XSS) ve Clickjacking gibi saldırıları önler.
HTTP başlıklarını korumak neden önemlidir?
Çoğu geliştirici HTTP başlıklarını görmezden gelir. Bu başlıklar, sunucu, yazılım sürümü ve hatta uygulamanın yapısı hakkında hassas bilgiler ortaya çıkarabilir. Bu nedenle Helmet.js gibi araçları kullanmak çok önemlidir.
Önemli Helmet.js modülleri
- X-Çerçeve-Seçenekleri: Sayfaların iFrame'lerde görüntülenmesini engelleyerek Clickjacking'i önleyin.
- İçerik Güvenlik Politikası: Yetkisiz betiklerin enjeksiyonunu önlemek için güvenlik politikası belirleyin.
- Önbellek Kontrolü: Hassas bilgiler için istemci tarafı önbelleğe almayı devre dışı bırakın.
- Beklenti-CT: SSL sertifika şeffaflığının sağlanması.
- X-Powered-By: Sunucu yazılım bilgilerini görüntüleyen başlıkları kaldırın.
- X-XSS-Koruması: Tarayıcılarda XSS saldırılarına karşı korumayı etkinleştirin.
- Sıkı Taşıma Güvenliği: Tarayıcının HTTPS kullanmaya zorlanması.
Helmet.js'i kullanmaya başlamak için bu modülü kurmanız ve Express uygulamanızda kullanmanız yeterli.
const helmet = require('helmet'); const express = require('express'); const app = express(); app.use(helmet());
2. Çerezlerin güvenli kullanımı
Çerezlerin uygulama güvenlik açıklarına yol açmamasını sağlamak için oturum çerezleri için varsayılan adı kullanmayı bırakın ve çerez güvenlik seçeneklerini uygun şekilde ayarlayın.
Yaygın çerez sorunları
Çerezler doğru şekilde ayarlanmazsa, siteler arası betik saldırıları veya bilgi ifşası için kolay hedef haline gelebilirler. Hassas çerez ayarlarının kullanılması bu riskleri azaltacaktır.
Önerilen ayarlar
- güvenli: Çerezlerin yalnızca HTTPS üzerinden gönderildiğinden emin olun.
- Yalnızca http: Çerezlere erişimi istemci tarafındaki JavaScript ile sınırlamak.
- ihtisas: Çerezler için geçerli bir etki alanı belirtin.
- yol: Çerezlerin geçerli olduğu yolları sınırlayın.
- son kullanma tarihi: Kalıcı çerezler için bir son kullanma tarihi belirleyin.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));3. NoSQL enjeksiyonlarını önleyin
NoSQL enjeksiyonu, NoSQL veritabanlarını kullanan uygulamalara yönelik yaygın bir saldırıdır. Bu saldırı, saldırganın hassas bilgileri elde etmesine olanak tanıyabilir.
Çözüm
Paketi kullanma express-mongo-sanitize Gelen verileri temizleyerek bu tarz saldırıların önüne geçebilirsiniz.
$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());4. ReDoS saldırılarını önleyin
Düzenli İfade'deki ReDoS veya Hizmet Reddi saldırıları sunucu performansının düşmesine neden olabilir. Araçtan güvenli-regex Güvenli olup olmadıklarını kontrol etmek için düzenli ifadeler kullanın.
Örnek
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));5. CSRF saldırılarını önleyin
Saldırganların meşru tarayıcılar aracılığıyla kötü amaçlı istekler göndermesine olanak tanıyan CSRF saldırılarına karşı uygulamanızı korumak için modülü kullanın csurf Kullanmak.
const csrf = require('csurf');
app.use(csrf());









