API Güvenliği ve Önerilen Araçlar

0 Hisse senetleri
0
0
0
0

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());
Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Ayrıca Şunları da Beğenebilirsiniz