Saldırı altındayız! 23+ Node.js güvenliği en iyi uygulamaları

Saldırı altındayız! 23+ Node.js güvenliği en iyi uygulamaları

Toplanan, küratörlüğünde ve yazan: Yoni Goldberg, Kyle Martin ve Bruno Scheufler

Teknik inceleme: Liran Tal (Node.js Güvenlik Çalışma Grubu)

En üst sıradaki makaleleri ve blog yayınlarını özetleyen ve sıralayan kapsamlı Node.js güvenliği en iyi uygulamaları listemize hoş geldiniz.

Başlamadan önce birkaç kelime

Web saldırıları, güvenlik sahnenin önüne geldiği günlerde patlıyor. Tüm dünyadaki en üst düzey makalelerden 23'ü aşkın Node.js güvenliği en iyi uygulamasını (+40 diğer genel güvenlik uygulamaları) derledik. Buradaki çalışma, 80'den fazla Node.js uygulaması içeren Node.js en iyi uygulamalarımız olan GitHub deposunun bir parçasıdır. Not: Pek çok öğe, kod örneği ve diğer faydalı bilgilerle ilgili konuya ilişkin daha ayrıntılı bir bağlantıya sahiptir.

Twitter yayınımızla haftalık en iyi uygulamaları edinin

1. linter güvenlik kurallarını benimseyin

TL; DR: Kodlama sırasında güvenlik açıklarını ve sorunları olabildiğince erken yakalamak için eslint-plugin-security gibi güvenlikle ilgili linter eklentilerini kullanın. Bu, eval kullanma, bir çocuk sürecini başlatma veya dizgesiz değişmez (örneğin kullanıcı girişi) içeren bir modül alma gibi güvenlik zayıflıklarının yakalanmasına yardımcı olabilir. Güvenlik linterinin yakalayacağı kod örneklerini görmek için aşağıdaki ‘Daha fazla bilgi’i tıklayın.

Aksi halde: Geliştirme sırasında basit bir güvenlik zayıflığı ne olabilirdi, üretimde önemli bir sorun haline geliyor. Ayrıca, proje tutarlı kod güvenliği uygulamalarını takip etmeyebilir, güvenlik açıklarının ortaya çıkmasına neden olabilir veya uzak havuzlarda işlenen hassas sırları gösteremez.

Devamını oku: Linter kuralları

Astar, beyaz alan, noktalı virgül veya değerlendirme ifadeleri hakkında bilgisel kuralları uygulamak için yalnızca bir araç olmak zorunda değildir. ESLint, kodunuzdaki çok çeşitli potansiyel olarak tehlikeli kalıpları ortadan kaldırmak için güçlü bir çerçeve sağlar (normal ifadeler, giriş doğrulama vb.). Güvenlik bilinçli JavaScript geliştiricileri tarafından dikkate alınması gereken güçlü ve yeni bir araç sunduğunu düşünüyorum. (Adam Baldwin)
Burada daha fazla alıntı ve kod örneği

2. Bir katman yazılımı kullanarak eşzamanlı istekleri sınırlayın

TL; DR: DOS saldırıları çok popüler ve yürütülmesi kolay. Bulut yük dengeleyicileri, bulut güvenlik duvarları, nginx, hız sınırlayıcısı esnek paket veya (daha küçük ve daha az kritik uygulamalar için) bir hız sınırlayıcı ara katman yazılımı (ör. Ekspres oranı sınırı) gibi harici bir hizmet kullanarak hız sınırlandırmayı uygulama

Aksi takdirde, bir uygulama, gerçek kullanıcıların bozulmuş veya kullanılamayan bir hizmet aldıkları bir hizmet reddiyle sonuçlanan bir saldırıya maruz kalabilir.

Devamını oku: Uygulama oranı sınırlandırıcısı

3. config dosyalarındaki sırları çıkarın veya şifrelemek için paketleri kullanın

TL; DR: Hiçbir zaman düz metin sırlarını yapılandırma dosyalarında veya kaynak kodunda saklamayın. Bunun yerine Vault ürünleri, Kubernetes / Docker Secrets gibi gizli yönetim sistemlerini veya ortam değişkenlerini kullanın. Sonuç olarak, kaynak kontrolünde saklanan sırlar şifrelenmeli ve yönetilmelidir (yuvarlama anahtarları, kullanım süresi dolma, denetim vb.). Yanlışlıkla sır vermeyi önlemek için ön işleme / itme kancalarını kullanın

Aksi takdirde: Özel depolar için bile, kaynak kontrolü yanlışlıkla gizli tutulur; bu noktada tüm sırlar açığa çıkar. Harici bir taraf için kaynak kontrolüne erişim, istemeden ilgili sistemlere (veritabanları, apiler, hizmetler vb.) Erişim sağlayacaktır.

Devamını oku: Gizli yönetim

4. ORM / ODM kitaplıklarıyla yapılan sorgu enjeksiyon güvenlik açıklarını önleyin

TL; DR: SQL / NoSQL enjeksiyonunu ve diğer kötü niyetli saldırıları önlemek için, her zaman bir ORM / ODM veya veriden kaçan veya adlandırılmış veya dizine alınmış parametreli sorguları destekleyen ve beklenen türler için kullanıcı girişini doğrulama işini yapan bir veritabanı kütüphanesini kullanın. Asla sadece sorgu şablonlarına değer eklemek için JavaScript şablon dizeleri veya dizi birleştirme özelliğini kullanmayın; bu, uygulamanızı geniş bir güvenlik açığı yelpazesine açar. Tüm saygın Node.js veri erişim kütüphaneleri (örneğin, Sequelize, Knex, mongoose) enjeksiyon saldırılarına karşı yerleşik korumaya sahiptir.

Aksi halde: Doğrulanmamış veya onaylanmamış kullanıcı girişi, NoSQL için MongoDB ile çalışırken operatör enjeksiyonuna neden olabilir ve uygun bir temizleme sistemi veya ORM kullanılmaması, SQL enjeksiyon saldırılarına kolayca izin verir ve dev bir güvenlik açığı oluşturur.

Devamını oku: ORM / ODM kütüphanelerini kullanarak sorgu enjeksiyonunu önleme

Çabaları takdir ediyor musunuz? Lütfen GitHub'daki projemize yıldız verin

5. Bir işlemin ne zaman kilitleneceğini açıkça ayarlayarak DOS saldırılarını önlemek

TL; DR: Düğüm işlemi, hatalar işlenmediğinde çökecektir. En iyi uygulamaların çoğu, bir hata yakalandı ve ele alınsa bile, çıkmanızı tavsiye eder. Örneğin, Express, herhangi bir zaman uyumsuz bir hatada çökecektir - rotaları bir yan tümce ile kaydırmadığınız sürece. Bu, hangi girişin işlemi çökerttiğini tanıyan ve aynı isteği tekrar tekrar gönderen saldırganlar için çok tatlı bir saldırı noktası açar. Bunun için acil bir çözüm bulunmamakla birlikte birkaç teknik ağrıyı azaltabilir: İşlenmeyen bir hata nedeniyle bir işlem çöktüğünde kritik önem derecesinde uyarı alın, girişi onaylayın ve geçersiz kullanıcı girişi nedeniyle işlemin çökmesini önleyin, tüm rotaları yakalayın ve bir istek içinde bir hata oluştuğunda çarpılmamayı düşünün (küresel olarak olanların aksine)

Aksi halde: Bu sadece eğitimli bir tahmin: Birçok POST istemi uygulamasına boş bir JSON gövdesi göndermeyi denersek, bir çok Node.js uygulaması göz önüne alındığında, bir avuç uygulama çökecek. Bu noktada, başvuruları kolaylıkla almak için aynı isteği göndermeyi tekrarlayabiliriz.

6. Gelişmiş güvenlik için HTTP yanıt başlıklarını ayarlayın

TL; DR: Uygulamanız, saldırganların siteler arası komut dosyası çalıştırma (XSS), tıklatma saldırısı ve diğer kötü amaçlı saldırılar gibi genel saldırıları kullanmasını önlemek için güvenli başlıklar kullanmalıdır. Bunlar kask gibi modüller kullanılarak kolayca yapılandırılabilir.

Aksi halde: Saldırganlar, uygulamanızın kullanıcılarına doğrudan saldırılar gerçekleştirerek büyük güvenlik açıklarına neden olabilir

Devamını Okuyun: Uygulamanızda güvenli başlıklar kullanma

7. Sürekli ve otomatik olarak hassas bağımlılıkları incelemek

TL; DR: npm ekosistemi ile bir proje için birçok bağımlılığa sahip olmak yaygındır. Yeni güvenlik açıkları bulunduğundan, bağımlılıklar her zaman kontrol altında tutulmalıdır. Hassas bağımlılıkları izlemek, izlemek ve düzeltmek için npm denetimi, nsp veya snyk gibi araçlar kullanın. Bu araçları CI kurulumunuza entegre edin, böylece üretime başlamadan önce hassas bir bağımlılığı yakalarsınız.

Aksi halde: Bir saldırgan web çerçevenizi algılayabilir ve bilinen tüm güvenlik açıklarına saldırabilir.

Devamını oku: Bağımlılık güvenliği

8. Parolaları işlemek için Node.js kripto kütüphanesini kullanmaktan kaçının, Bcrypt kullanın.

TL; DR: Şifreler veya sırlar (API anahtarları), bcrypt gibi güvenli bir hash + salt işlevi kullanılarak depolanmalıdır; bu, performans ve güvenlik nedeniyle JavaScript uygulaması yerine tercih edilen bir seçenek olmalıdır.

Aksi takdirde: Güvenli bir işlev kullanmadan devam eden şifreler veya sırlar, sonunda açıklamalarına yol açacak kaba kabadayılık ve sözlük saldırılarına açıktır.

Devamını oku: Bcrypt kullanın

9. Kaçış HTML, JS ve CSS çıkışı

TL; DR: Tarayıcıya gönderilen güvenilmeyen veriler yalnızca görüntülenmek yerine çalıştırılabilir, buna genellikle siteler arası komut dosyası çalıştırma (XSS) saldırısı denir. Verileri, hiçbir zaman çalıştırılmaması gereken saf içerik olarak açıkça işaretleyen özel kütüphaneler kullanarak bunu azaltın (ör. Kodlama, kaçma)

Aksi halde: Bir saldırgan, DB'nizde kötü niyetli bir JavaScript kodu depolayabilir ve bu durum daha sonra kötü istemcilere olduğu gibi gönderilir.

Devamını oku: Escape çıkışı

10. Gelen JSON şemalarını doğrulayın

TL; DR: Gelen isteklerin kuruluşun yükünü doğrulayın ve beklentileri nitelendirdiğini doğrulayın, yoksa hızlı bir şekilde başarısız olun. Her rotadaki sıkıcı doğrulama kodlamasını önlemek için, jsonschema veya joi gibi hafif JSON tabanlı doğrulama şemaları kullanabilirsiniz.

Aksi halde: Cömertliğiniz ve izin verilen yaklaşımınız saldırı yüzeyini büyük ölçüde artırır ve saldırganı, uygulamanın çökmesine neden olacak bir kombinasyon bulana kadar birçok girdi denemeye teşvik eder

Devamını Okuyun: Gelen JSON şemalarını doğrulayın

11. JWT belirteçlerini kara listeye alma

TL; DR: JWT belirteçlerini kullanırken (örneğin, Passport.js ile), varsayılan olarak, verilen belirteçlerden erişimi iptal etmek için hiçbir mekanizma yoktur. Kötü niyetli bir kullanıcı etkinliği keşfettiğinizde, geçerli bir simge bulundukları sürece sisteme erişmelerini engellemenin bir yolu yoktur. Her istekte doğrulanmış bir güvenilmeyen belirteçlerin kara listesini uygulayarak bunu azaltın.

Aksi halde: Süresi bitmiş veya yanlış yerleştirilmiş belirteçler, bir uygulamaya erişmek ve belirteç sahibini taklit etmek için üçüncü taraflarca kötü amaçlı olarak kullanılabilir.

Devamını oku: Blacklisting JWTs

12. Yetkilendirmeye karşı kaba kuvvet saldırılarını önleme

TL; DR: Basit ve güçlü bir teknik, iki ölçüm kullanarak yetkilendirme girişimlerini sınırlandırmaktır:

  1. Birincisi, aynı kullanıcı benzersiz kimliği / adı ve IP adresiyle art arda başarısız denemelerin sayısıdır.
  2. İkincisi, uzun bir süre boyunca bir IP adresinden yapılan başarısız deneme sayısıdır. Örneğin, bir günde 100 başarısız deneme yaparsa bir IP adresini engelleyin.

Aksi halde: Bir saldırgan, bir uygulamadaki ayrıcalıklı hesaplara erişim elde etmek için sınırsız otomatik şifre girişimi yapabilir

Devamını oku: Giriş oranı sınırlama

13. Node.js dosyasını root dışı kullanıcı olarak çalıştırın

TL; DR: Node.js'nin sınırsız izinlere sahip bir kök kullanıcı olarak çalıştığı ortak bir senaryo var. Örneğin, Docker kapsayıcısındaki varsayılan davranış budur. Kök olmayan bir kullanıcı oluşturmanız ve onu Docker görüntüsüne (aşağıda verilen örnekler) pişirmeniz veya bu adı altında işlemi “-u username” işaretini kullanarak çağırarak bu işlemi gerçekleştirmeniz önerilir.

Aksi halde: Sunucuda bir komut dosyası çalıştırmayı yöneten bir saldırgan, yerel makine üzerinde sınırsız güç elde eder (örneğin, iptable'ı değiştirir ve trafiğini sunucusuna yeniden yönlendirir)

Devamını Okuyun: Node.js dosyasını root dışı kullanıcı olarak çalıştırın

14. Ters proxy veya ara katman yazılımı kullanarak yük taşıma kapasitesini sınırlayın

TL; DR: Gövde yükü arttıkça, tek dişlinizin işlenmesinde daha zor çalışır. Bu, saldırganların muazzam sayıda istek (DOS / DDOS saldırıları) olmadan sunucuları dizlerine getirmeleri için bir fırsattır. Bunu, gelen isteklerin gövde boyutunu kenarda sınırlandırarak (örneğin, güvenlik duvarı, ELB) veya ekspres vücut ayrıştırıcısını yalnızca küçük boyutlu yükleri kabul edecek şekilde yapılandırarak azaltın.

Aksi takdirde: Başvurunuz büyük taleplerle uğraşmak zorunda kalacak, yapması gereken diğer önemli işleri yapamayacak, DOS etkilerine karşı performans etkilerine ve kırılganlıklara yol açacaktır.

Devamını oku: Limit taşıma kapasitesi

Twitter yayınımızla haftalık en iyi uygulamaları edinin

15. JavaScript eval ifadelerini kullanmaktan kaçının

TL; DR: eval, çalışma süresi boyunca özel bir JavaScript kodu yürütülmesine izin verdiği için kötüdür. Bu sadece bir performans endişesi değil, aynı zamanda kullanıcı girişinden kaynaklanabilecek kötü amaçlı JavaScript kodu nedeniyle de önemli bir güvenlik sorunudur. Kaçınılması gereken diğer bir dil özelliği ise yeni İşlev kurucusu. setTimeout ve setInterval öğelerinin de hiçbir zaman dinamik JavaScript kodu geçirilmemesi gerekir.

Aksi halde: Kötü amaçlı JavaScript kodu, değerlendirmeye veya JavaScript'in gerçek zamanlı olarak değerlendirildiği diğer JavaScript dil işlevlerine aktarılan bir metnin yolunu bulur ve sayfadaki JavaScript izinlerine tam erişim sağlar. Bu güvenlik açığı, genellikle bir XSS saldırısı olarak kendini gösterir.

Devamını oku: JavaScript eval ifadelerini kullanmaktan kaçının

16. Kötü RegEx'in tek iş parçacığı yürütmenizi aşırı yüklemesini önleyin

TL; DR: Normal İfadeler kullanışlı olsa da, JavaScript uygulamalarına ve özellikle Node.js platformuna gerçek bir tehdit oluşturuyor. Metnin eşleşmesi için bir kullanıcı girişi, işlemden geçirmek için olağanüstü miktarda CPU döngüsü gerektirebilir. RegEx işlemesi, 10 sözcüğü doğrulayan tek bir isteğin, tüm olay döngüsünü 6 saniye boyunca engelleyebileceği ve CPU'yu olarak ayarlayabileceği ölçüde yetersiz olabilir. Bu nedenle, kendi Regex kalıplarınızı yazmak yerine validator.js gibi üçüncü taraf doğrulama paketlerini tercih edin ya da hassas regex kalıplarını tespit etmek için safe regex'ten yararlanın

Aksi halde: Kötü yazılmış regex'ler, olay döngüsünü tamamen engelleyecek Normal İfade DoS saldırılarına açık olabilir. Örneğin, popüler an paketi 2017 yılının Kasım ayında kötü niyetli RegEx kullanımına karşı savunmasız kaldı

Devamını oku: Kötü niyetli RegEx'i önle

17. Bir değişken kullanarak modül yüklemekten kaçının

TL; DR: Kullanıcı girdisinden kaynaklanabileceği endişesi nedeniyle parametre olarak verilen yolu olan başka bir dosyaya ihtiyaç duymamak / almaktan kaçının. Bu kural genel olarak dosyalara (yani fs.readFile ()) veya kullanıcı girdisinden kaynaklanan dinamik değişkenlerle diğer hassas kaynak erişimine erişmek için genişletilebilir. Eslint-plugin-security linter bu tarz desenleri yakalayabilir ve yeterince erken uyarır

Aksi halde: Kötü niyetli kullanıcı girişi, değiştirilmiş dosyaları, örneğin dosya sistemine daha önce yüklenen bir dosyayı gerektiren veya önceden var olan sistem dosyalarına erişen bir parametreye giden yolu bulabilir.

Devamını oku: Güvenli modül yükleme

18. Sanal alanda güvenli olmayan kod çalıştırma

TL; DR: Çalışma zamanında verilen harici kodu (örneğin, eklenti) çalıştırmakla görevlendirildiğinde, ana kodu eklentiye karşı izole eden ve koruyan her türlü "sanal alan" yürütme ortamını kullanın. Bu, özel bir işlem (örneğin, cluster.fork ()), sunucusuz ortam veya sanal alan olarak işlev gören özel npm paketleri kullanılarak gerçekleştirilebilir

Aksi takdirde: Bir eklenti sonsuz döngüler, bellek aşırı yüklenmesi ve hassas işlem ortamı değişkenlerine erişim gibi sayısız seçenek arasından saldırabilir

Devamını Okuyun: Güvenli olmayan bir alanda sanal kod çalıştırma

19. Çocuk süreçleriyle çalışırken ekstra özen gösterin

TL; DR: Mümkünse çocuk işlemlerini kullanmaktan kaçının ve hala gerekiyorsa kabuk enjeksiyon saldırılarını azaltmak için girişi onaylayın ve sterilize edin. Tanım gereği yalnızca tek bir komutu bir öznitelik kümesiyle yürüten ve kabuk parametresi genişlemesine izin vermeyecek olan child_process.execFile öğesini kullanmayı tercih edin.

Aksi halde: Alt işlemlerin naif kullanımı, sterilize edilmemiş bir sistem komutuna iletilen kötü niyetli kullanıcı girişi nedeniyle uzaktan komut çalıştırma veya kabuk enjeksiyon saldırılarına neden olabilir.

Devamını oku: Çocuk süreçleriyle çalışırken dikkatli olun

20. İstemcilerden hata ayrıntılarını gizle

TL; DR: Entegre bir ekspres hata işleyicisi, hata ayrıntılarını varsayılan olarak gizler. Bununla birlikte, kendi hata işleme mantığınızı özel Error nesneleriyle (çoğu kişi tarafından en iyi uygulama olarak kabul edilir) uygulayabilmeniz için harika bir yöntemdir. Bunu yaparsanız, bazı hassas uygulama ayrıntılarını içerebilecek tüm Error nesnesini istemciye iade etmediğinizden emin olun.

Aksi takdirde: Sunucu dosya yolları, kullanılan üçüncü taraf modüller ve bir saldırgan tarafından yararlanılabilecek uygulamanın diğer dahili iş akışları gibi hassas uygulama ayrıntıları yığın izinde bulunan bilgilerden sızabilir

Devamını Okuyun: Hata ayrıntılarını istemcilerden gizleyin

21. npm veya İplik için 2FA'yı yapılandırın

TL; DR: Geliştirme zincirindeki herhangi bir adım, MFA (çok faktörlü kimlik doğrulama) ile korunmalıdır, npm / İplik, bazı geliştiricilerin şifresini ele geçirebilecek saldırganlar için tatlı bir fırsattır. Geliştirici kimlik bilgilerini kullanarak, saldırganlar, projeler ve hizmetler arasında yaygın olarak yüklenen kitaplıklara kötü amaçlı kod enjekte edebilir. Halka açık olarak yayınlanmışsa, belki web'de bile. Npm'de 2 faktörlü kimlik doğrulamasını etkinleştirmek, saldırganların paket kodunuzu değiştirmesi için neredeyse sıfır şans sağlar.

Aksi halde: Parolasının kaçırıldığı eslint geliştiricisini duydunuz mu?

22. Oturum ara katman yazılımı ayarlarını değiştirme

TL; DR: Her web çerçevesi ve teknolojisinin bilinen zayıf yönleri vardır - saldırgana hangi web çerçevesini kullandığımızı söylemeleri onlar için çok yardımcıdır. Oturum ara araçları için varsayılan ayarları kullanmak, uygulamanızı X-Powered-By başlığına benzer şekilde modüle ve çerçeveye özgü kaçırılma saldırılarına maruz bırakabilir. Teknoloji yığınınızı tanımlayan ve ortaya çıkaran herhangi bir şeyi gizlemeyi deneyin (E.n. Node.js, express)

Aksi halde, çerezler güvenli olmayan bağlantılar üzerinden gönderilebilir ve bir saldırgan web uygulamasının temel çerçevesini ve modüle özgü güvenlik açıklarını belirlemek için oturum kimliğini kullanabilir

Devamını Oku: Çerez ve oturum güvenliği

23. Bir işlemin ne zaman kilitleneceğini açıkça ayarlayarak DOS saldırılarından kaçının

TL; DR: Düğüm işlemi, hatalar işlenmediğinde çökecektir. En iyi uygulamaların çoğu, bir hata yakalandı ve ele alınsa bile, çıkmanızı tavsiye eder. Örneğin, Express, herhangi bir zaman uyumsuz bir hatada çökecektir - rotaları bir yan tümce ile kaydırmadığınız sürece. Bu, hangi girişin işlemi çökerttiğini tanıyan ve aynı isteği tekrar tekrar gönderen saldırganlar için çok tatlı bir saldırı noktası açar. Bunun için acil bir çözüm bulunmamakla birlikte birkaç teknik ağrıyı azaltabilir: İşlenmeyen bir hata nedeniyle bir işlem çöktüğünde kritik önem derecesinde uyarı alın, girişi onaylayın ve geçersiz kullanıcı girişi nedeniyle işlemin çökmesini önleyin, tüm rotaları yakalayın ve bir istek içinde bir hata oluştuğunda çarpılmamayı düşünün (küresel olarak olanların aksine)

Aksi halde: Bu sadece eğitimli bir tahmin: Birçok POST istemi uygulamasına boş bir JSON gövdesi göndermeyi denersek, bir çok Node.js uygulaması göz önüne alındığında, bir avuç uygulama çökecek. Bu noktada, başvuruları kolaylıkla almak için aynı isteği göndermeyi tekrarlayabiliriz.

24. Güvensiz yönlendirmeleri önle

TL; DR: Kullanıcı girişini doğrulamayan yönlendirmeler, saldırganların kimlik avı dolandırıcılığı başlatmasına, kullanıcı kimlik bilgilerini çalmasına ve diğer kötü amaçlı eylemleri gerçekleştirmesine olanak sağlar.

Aksi halde: Eğer bir saldırgan, kullanıcı tarafından sağlanan harici girişi doğrulamadığınızı tespit ederse, bu güvenlik açığından, forumlarda, sosyal medyada ve diğer halka açık alanlarda özel hazırlanmış bağlantılar yayınlayarak kullanıcıların tıklatmasını sağlayabilir.

Devamını oku: Güvensiz yönlendirmeleri önle

25. Npm kayıt defterinde sır yayınlamaktan kaçının

TL; DR: Yanlışlıkla kamu npm kayıtlarına gizlilikle yayınlanma riskini önlemek için önlemler alınmalıdır. Bir .npmignore dosyası, belirli dosyaları veya klasörleri kara listeye almak için kullanılabilir veya package.json içindeki dosyalar dizisi beyaz liste görevi görebilir.

Aksi halde: Projenizin API anahtarları, şifreleri veya diğer sırları, karşısına çıkan herkes tarafından suiistimal edilmeye açıktır; bu da maddi kayıp, kimliğe bürünme ve diğer risklerle sonuçlanabilir.

Devamını Okuyun: Sır yayınlamaktan kaçının

Çabaları takdir ediyor musunuz? Lütfen GitHub'daki projemize yıldız verin

26. 40 genel güvenlik tavsiyesi listesi (özellikle Node.js ile ilgili değil)

Aşağıdaki madde işaretleri, her uygulamada uygulanması gereken iyi bilinen ve önemli güvenlik önlemleridir. Mutlaka Node.js ile ilgili olmadıklarından ve uygulama çerçevesinden bağımsız olarak benzer şekilde uygulandıklarından - onları buraya bir ek olarak ekleriz. Maddeler OWASP sınıflandırmasına göre gruplandırılmıştır. Bir örnek aşağıdaki noktaları içerir:

  • Kök hesap için MFA / 2FA gerektir
  • SSH anahtarları da dahil olmak üzere şifreleri ve erişim anahtarlarını sık sık döndürün
  • Hem işlemciler hem de uygulama içi kullanıcı yönetimi için güçlü şifre politikaları uygulayın, bkz. OWASP şifre önerisi
  • Herhangi bir varsayılan kimlik bilgisiyle, özellikle yönetici kullanıcıları için göndermeyin veya dağıtmayın
  • Yalnızca OAuth, OpenID vb. Gibi standart kimlik doğrulama yöntemlerini kullanın - temel kimlik doğrulamasından kaçının
  • Kimlik doğrulama oranı sınırlaması: Y dakika içinde X oturum açma denemesinden (parola kurtarma vb. Dahil) daha fazlasına izin verme
  • Oturum açma başarısızlığında, kullanıcının kullanıcı adı veya parola doğrulamanın başarısız olup olmadığını bilmesine izin vermeyin, yalnızca ortak bir doğrulama hatası döndürün
  • Çalışan başına birden fazla hesabı (örneğin, GitHub, AWS, Jenkins, vb.) Yönetmekten kaçınmak ve savaşta test edilmiş bir kullanıcı yönetim sisteminden yararlanmak için merkezi bir kullanıcı yönetim sistemi kullanmayı düşünün

40 genel güvenlik tavsiyesinin tam listesi resmi Node.js en iyi uygulama havuzunda bulunabilir!

Devamını oku: 40 Genel güvenlik tavsiyesi

Diğer iyi okumalar:

  • Node.js üretimi için en iyi yöntemler - Yoni Goldberg
  • Node.js Güvenliğine Genel Bakış - Gergely Nemeth
  • En iyi güvenlik uygulamalarını ifade etme - Hızlı resmi
  • YouTube: Bir Node.js Güvenlik Yol Haritası - Mike Samuel

Yazarlar - hakkımızda

  • Yoni Goldberg - Node.js danışmanı, ABD, Avrupa ve İsrail'de müşterilerine hizmet veriyor
  • Kyle Martin - Yeni Zelanda merkezli Full Stack Developer
  • Bruno Scheufler - Tam yığın web geliştiricisi ve Node.js enthusiast
Çabaları takdir ediyor musunuz? Alttan alkışlamak (50 kereye kadar) günümüze gelebilir