Aracılığıyla paylaş


Geliştirme yaşam döngüsünün güvenliğini sağlamaya yönelik öneriler

Bu Azure Well-Architected Framework Güvenlik denetim listesi önerisi için geçerlidir:

SE:02 Sağlamlaştırılmış, çoğunlukla otomatik ve denetlenebilir bir yazılım tedarik zinciri kullanarak güvenli bir geliştirme yaşam döngüsünü koruyun. Güvenliği yenen uygulamalara karşı koruma sağlamak için tehdit modellemesini kullanarak güvenli bir tasarım ekleyin.

İlgili kılavuz: Tehdit analizi

Bu kılavuzda, geliştirme döngüsü boyunca en iyi güvenlik uygulamalarını uygulayarak kodunuzu, geliştirme ortamınızı ve yazılım tedarik zincirinizi sağlamlaştırmaya yönelik öneriler açıklanmaktadır. Bu kılavuzu anlamak için DevSecOps hakkında bilgi sahibi olmanız gerekir.

Güvenlik döngüsünün diyagramı.

DevSecOps, aşağıdakileri yaparak güvenliği DevOps işlemleriyle tümleştirir:

  • Güvenlik testlerini ve doğrulamayı otomatikleştirme.

  • Güvenlik açıklarına karşı kod ve kod olarak altyapıyı (IaC) taramak için güvenlik işlem hatları gibi araçlar uygulama.

bir iş yükünün temeli, iş mantığını uygulayan uygulama kodudur. Kodun ve kod geliştirme işleminin gizlilik, bütünlük ve kullanılabilirlik sağlamak için güvenlik hatalarından arındırılması gerekir.

Kimlik, ağ ve diğer ölçüler üzerindeki denetimleri kullanarak yalnızca altyapı düzleminin güvenliğini sağlamak yeterli değildir. Genel güvenlik duruşunuzu güçlendirmek için kodun veya güvenliği aşılmış bir kod bloğunun hatalı uygulanmasını önleyin. Kullanım düzlemi, yani uygulama kodu da sağlamlaştırılmalıdır. Güvenliği geliştirme yaşam döngünüzle tümleştirme süreci temelde sağlamlaştırma işlemidir. Kaynak sağlamlaştırma gibi kod geliştirmenin sıkılaştırılması da bağlam açısından bağımsızdır. Odak, uygulamanın işlevsel gereksinimlerini değil güvenliği geliştirmektir. Sağlamlaştırmayla ilgili bilgiler için bkz. Kaynakları sağlamlaştırma önerileri.

Tanımlar

Süre Tanım
Güvenlik Geliştirme Yaşam Döngüsü (SDL) Microsoft tarafından sağlanan ve güvenlik güvencesi ve uyumluluk gereksinimlerini destekleyen bir dizi uygulama.
Yazılım geliştirme yaşam döngüsü (SDLC) Yazılım sistemleri geliştirmek için çok aşamalı, sistematik bir süreç.

Temel tasarım stratejileri

Güvenlik önlemleri, şu güvenceyi sağlamak için mevcut Yazılım Geliştirme Yaşam Döngünüze (SDLC) birden çok noktada tümleştirilmelidir:

  • Tasarım seçimleri güvenlik açıklarına yol açmaz.

  • Uygulama kodu ve yapılandırması, kötüye kullanılabilir uygulama ve yanlış kodlama uygulamaları nedeniyle güvenlik açıkları oluşturmaz.

  • Tedarik zinciri aracılığıyla alınan yazılımlar güvenlik tehditlerine neden olmaz.

  • Uygulama kodu, derleme ve dağıtım işlemleriyle oynanmamış.

  • Olaylar aracılığıyla ortaya çıkarılan güvenlik açıkları azaltılır.

  • Kullanılmayan varlıklar düzgün bir şekilde kullanımdan çıkarılır.

  • Uyumluluk gereksinimleri tehlikeye atılamaz veya azaltılamaz.

  • Denetim günlüğü geliştirici ortamlarında uygulanır.

Aşağıdaki bölümler SDLC'nin yaygın olarak kullanılan aşamaları için güvenlik stratejileri sağlar.

Gereksinimler aşaması

Gereksinimler aşamasının amacı, bir uygulama veya uygulamanın yeni bir özelliği için işlevsel ve işlevsel olmayan gereksinimleri toplamak ve analiz etmektir . Bu aşama, uygulamanın hedeflerine göre uyarlanmış korumaların oluşturulmasını kolaylaştırdığı için önemlidir. Uygulamanızın verilerini ve bütünlüğünü korumak, geliştirme yaşam döngüsünün her aşamasında temel bir gereksinim olmalıdır.

Örneğin, kullanıcının verileri karşıya yüklemesini ve işlemesini sağlayan kritik kullanıcı akışlarını desteklemesi gereken bir uygulama düşünün. Güvenlik tasarımı seçimleri, kullanıcının uygulamayla etkileşimi için kimlik doğrulaması ve yetkilendirme, veriler üzerinde yalnızca izin verilen eylemlere izin verme ve SQL ekleme işlemini önleme gibi güvenceleri kapsamalıdır. Benzer şekilde kullanılabilirlik, ölçeklenebilirlik ve bakım gibi işlevsel olmayan gereksinimleri de kapsar. Güvenlik seçenekleri segmentlere ayırma sınırlarını, güvenlik duvarı giriş ve çıkışını ve diğer çapraz kesme güvenlik endişelerini içermelidir.

Tüm bu kararlar, uygulamanın güvenlik duruşunun iyi bir tanımına yol açmalıdır. Güvenlik gereksinimlerini üzerinde anlaşmaya varılan bir belirtim içinde belgeleyin ve kapsam içinde yansıtın. Yatırımlar iş paydaşları tarafından onaylanmadığı takdirde, güvenlik yatırımlarını ve işletmenin üstlenmeye istekli olduğu dengeleri ve riskleri açıkça belirtmelidir. Örneğin, uygulamanızın önünde Azure Front Door veya Azure Application Gateway gibi bir web uygulaması güvenlik duvarı (WAF) kullanma gereksinimini belgeleyebilirsiniz. İş paydaşları WAF çalıştırmanın ek maliyetini kabul etmeye hazır değilse, uygulama katmanı saldırılarının uygulamaya yönlendirilebileceği riskini kabul etmeleri gerekir.

Güvenlik gereksinimi toplama, bu aşamanın kritik bir parçasıdır. Bu çaba olmadan tasarım ve uygulama aşamaları, güvenlik açıklarına yol açabilecek, durum bilgisiz seçimlere dayalı olacaktır. Güvenliği sağlamak için uygulamayı daha sonra değiştirmeniz gerekebilir ve bu pahalı olabilir.

Tasarım aşaması

Bu aşamada güvenlik gereksinimleri teknik gereksinimlere dönüştürülür. Teknik belirtiminizde, uygulama sırasında belirsizliği önlemek için tüm tasarım kararlarını belgeleyin. Bazı tipik görevler şunlardır:

Sistem mimarisinin güvenlik boyutunu tanımlama

Güvenlik denetimleriyle mimariyi yer paylaşımlı olarak belirleyin. Örneğin, segmentasyon stratejinize göre yalıtım sınırları üzerinde pratik olan denetimler, uygulamanın bileşenleri için gereken kimlik türleri ve kullanılacak şifreleme yöntemlerinin türü. Bazı örnek mimariler için Kimlik ve erişim yönetimi ve makalelerinin Örnek bölümlerindeki çizimlere bakın.

Platform tarafından sağlanan avantajları değerlendirme

Bulut sağlayıcısıyla aranızdaki sorumluluk ayrımını anlamak önemlidir. Örneğin, Azure yerel güvenlik denetimleriyle çakışmaktan kaçının. Daha iyi güvenlik kapsamı elde edersiniz ve geliştirme kaynaklarını uygulamanın gereksinimlerine yeniden ayırabilirsiniz.

Örneğin, tasarımınız girişte bir web uygulaması güvenlik duvarı gerektiriyorsa, bu sorumluluğu Application Gateway veya Azure Front Door gibi bir yük dengeleyiciye devredebilirsiniz. Özellikleri uygulamanızda özel kod olarak çoğaltmaktan kaçının.

Yalnızca güvenilen çerçeveleri, kitaplıkları ve tedarik zinciri yazılımını seçin. Tasarımınız güvenli sürüm denetimi de belirtmelidir. Uygulama bağımlılıklarının güvenilir taraflardan kaynaklanması gerekir. Üçüncü taraf satıcılar güvenlik gereksinimlerinizi karşılayabilmeli ve sorumlu açıklama planlarını paylaşabilmelidir. Gerekli eylemleri gerçekleştirebilmeniz için tüm güvenlik olayları hemen bildirilmelidir. Ayrıca, kuruluşunuz bazı kitaplıkları yasaklayabilir. Örneğin, yazılım güvenlik açıklarına karşı güvenli olabilir, ancak lisanslama kısıtlamaları nedeniyle hala izin verilmiyor olabilir.

Bu kılavuzun yazılıma tüm katkıda bulunanlar tarafından izlendiğinden emin olmak için onaylı ve/veya onaylanmamış çerçevelerin, kitaplıkların ve satıcıların listesini tutun. Mümkün olduğunda, listeyi desteklemek için geliştirme işlem hatlarına korumalar yerleştirin. Mümkün olduğunca, bağımlılıkları güvenlik açıklarına karşı taramak için araçların kullanımını otomatikleştirin .

Uygulama kodunun uygulaması gereken güvenlik tasarımı desenlerini belirleyin.

Desenler segmentasyon ve yalıtım, güçlü yetkilendirme, tekdüzen uygulama güvenliği ve modern protokoller gibi güvenlik sorunlarını destekleyebilir. Karantina düzeni gibi bazı işlem desenleri, güvenlik açıklarına neden olabilecek yazılımların kullanımını doğrulamaya ve engellemeye yardımcı olabilir.

Daha fazla bilgi için bkz. Güvenliği destekleyen bulut tasarımı desenleri.

Uygulama gizli dizilerini güvenli bir şekilde depolama

Uygulamanızın kullandığı uygulama gizli dizilerinin ve önceden paylaşılan anahtarların kullanımını güvenli bir şekilde uygulayın. Kimlik bilgileri ve uygulama gizli dizileri hiçbir zaman kaynak kod ağacında depolanmamalıdır. Kaynak kodunuzun olası bir saldırganın kullanımına sunulması durumunda başka erişim elde edilemediğinden emin olmak için Azure Key Vault gibi dış kaynakları kullanın. Genel olarak gizli dizilerden kaçınmanın yollarını bulun. Mümkün olduğunda yönetilen kimlikleri kullanmak, bu hedefe ulaşmanın bir yoludur. Daha fazla bilgi için bkz. Uygulama gizli dizilerini yönetme önerileri.

Test planlarını tanımlama

Güvenlik gereksinimleri için açık test çalışmaları tanımlayın. İşlem hatlarınızda bu testleri otomatikleştirip otomatikleştiremeyeceğinizi değerlendirin. Ekibiniz el ile test işlemlerine sahipse, bu testler için güvenlik gereksinimlerini dahil edin.

Not

Bu aşamada tehdit modellemesi gerçekleştirin. Tehdit modellemesi, tasarım seçimlerinin güvenlik gereksinimleriyle uyumlu olduğunu onaylayabilir ve azaltmanız gereken boşlukları ortaya çıkarabilir. İş yükünüz son derece hassas verileri işiyorsa tehdit modellemesi gerçekleştirmenize yardımcı olabilecek güvenlik uzmanlarına yatırım yapın.

İlk tehdit modelleme alıştırması, yazılımın mimarisi ve üst düzey tasarımı tanımlandığında tasarım aşamasında gerçekleşmelidir. Bu aşamada bunu yapmak, olası güvenlik sorunlarını sistemin yapısına eklenmeden önce belirlemenize yardımcı olur. Ancak bu alıştırma tek seferlik bir etkinlik değildir. Bu, yazılımın gelişimi boyunca devam etmesi gereken sürekli bir süreçtir.

Daha fazla bilgi için bkz. Tehdit analizi önerileri.

Geliştirme ve test aşaması

Bu aşamada amaç, kod, derleme ve dağıtım işlem hatlarında güvenlik hatalarını ve kurcalamayı önlemektir .

Güvenli kod uygulamaları hakkında iyi eğitim alın

Geliştirme ekibi , güvenli kodlama uygulamaları konusunda resmi ve özel eğitime sahip olmalıdır. Örneğin, web ve API geliştiricileri siteler arası betik saldırılarına karşı koruma sağlamak için belirli bir eğitime ihtiyaç duyabilir ve arka uç geliştiricileri SQL ekleme saldırıları gibi veritabanı düzeyinde saldırılardan kaçınmak için ayrıntılı eğitimden yararlanabilir.

Geliştiricilerin üretim kaynak koduna erişim elde etmeden önce bu eğitimi tamamlaması gerekir.

Ayrıca sürekli öğrenmeyi teşvik etmek için iç eş kod incelemeleri de gerçekleştirmelisiniz.

Güvenlik testi araçlarını kullanma

Uygulamanın mimarisinin güvenliğini değerlendirmek için tehdit modellemesi gerçekleştirin.

Güvenlik açıklarına yönelik kodu analiz etmek için statik uygulama güvenlik testi (SAST) kullanın. Güvenlik açıklarını gerçek zamanlı olarak algılamak için bu metodolojiyi geliştirici ortamıyla tümleştirin.

Çalışma zamanı sırasında dinamik uygulama güvenlik testi (DAST) kullanın. Bu araç zinciri, güvenlik etki alanlarındaki hataları denetleyebiliyor ve uygulamanın güvenlik dayanıklılığını test etmek için bir dizi saldırı benzetimi yapabilir. Mümkün olduğunda bu aracı derleme işlem hatlarınızla tümleştirin.

Güvenli kodlama uygulamaları için sektör standartlarını izleyin. Daha fazla bilgi için bu makalenin Topluluk kaynakları bölümüne bakın.

Kimlik bilgilerinin kaynak kod deposuna gönderilmesini önlemek için linter ve kod çözümleyicileri kullanın. Örneğin, .NET Compiler Platform (Roslyn) Çözümleyicileri uygulama kodunuzu inceler.

Derleme işlemi sırasında kaynak koddaki kimlik bilgilerini yakalamak için işlem hattı eklentilerini kullanın. Sürekli tümleştirme sürecinin bir parçası olarak üçüncü taraf kitaplıkları ve çerçeve bileşenleri gibi tüm bağımlılıkları tarayın. Araç tarafından bayrak eklenmiş güvenlik açığı olan bileşenleri araştırın. Bu görevi kod değişim sıklığı, test sonuçları ve kapsamı inceleyen diğer kod tarama görevleriyle birleştirin.

Testlerin birleşimini kullanın. Genel olarak güvenlik testi hakkında bilgi için bkz. Güvenlik testi önerileri.

Yeterli kod yazma

Kod ayak izinizi azalttığınızda, güvenlik hatası olasılığını da azaltırsınız. Zaten kullanımda olan ve kodu yinelemek yerine güvenlik doğrulamalarından geçen kodu ve kitaplıkları yeniden kullanın .

Azure özelliklerinden yararlanmak, gereksiz kodları önlemenin bir diğer yoludur. Bunun bir yolu, yönetilen hizmetleri kullanmaktır. Daha fazla bilgi için bkz. Hizmet olarak platform (PaaS) seçeneklerini kullanma.

Varsayılan olarak tümünü reddet yaklaşımıyla kod yazın. Yalnızca erişim gerektiren varlıklar için izin verilenler listesi oluşturun. Örneğin, ayrıcalıklı bir işleme izin verilip verilmeyeceğini belirlemesi gereken kodunuz varsa, reddetme sonucunun varsayılan durum olması ve izin verme sonucunun yalnızca kod tarafından özel olarak izin verildiğinde gerçekleşmesi için bunu yazmanız gerekir.

Geliştirici ortamlarını koruma

Geliştirici iş istasyonlarının açığa çıkmasını önlemek için güçlü ağ ve kimlik denetimleriyle korunması gerekir. Güvenlik güncelleştirmelerinin özenle uygulandığına emin olun.

Derleme aracıları yüksek ayrıcalıklıdır ve derleme sunucusuna ve koda erişebilir. İş yükü bileşenlerinizle aynı titizlikle korunmalıdır. Bu, derleme aracılarına erişimin kimliğinin doğrulanması ve yetkilendirilmesi, güvenlik duvarı denetimleriyle ağ kesimli olması, güvenlik açığı taramasına tabi olması vb. gerektiği anlamına gelir. Şirket içinde barındırılan derleme aracıları yerine Microsoft tarafından barındırılan derleme aracıları tercih edilmelidir. Microsoft tarafından barındırılan aracılar, bir işlem hattının her çalıştırması için temiz sanal makineler gibi avantajlar sağlar.

Özel derleme aracıları yönetim karmaşıklığı ekler ve bir saldırı vektöre dönüşebilir. Derleme makinesi kimlik bilgileri güvenli bir şekilde depolanmalıdır ve dosya sisteminden geçici derleme yapıtlarını düzenli olarak kaldırmanız gerekir. Azure DevOps ile iletişimin çekme modelini kullandığından, yalnızca derleme aracısından giden trafiğe izin vererek ağ yalıtımı elde edebilirsiniz.

Kaynak kod deposu da korunmalıdır . Kod depolarına bilmeniz gerekenler temelinde erişim izni verin ve saldırılardan kaçınmak için güvenlik açıklarının açığa çıkarılmasını mümkün olduğunca azaltın. Güvenlik açıkları için kodu gözden geçirmek için kapsamlı bir işleme sahip olun. Bu amaçla güvenlik gruplarını kullanın ve iş gerekçelerini temel alan bir onay süreci uygulayın.

Güvenli kod dağıtımları

Yalnızca kodun güvenliğini sağlamak yeterli değildir. Sömürülebilir işlem hatlarında çalıştırılırsa, tüm güvenlik çalışmaları boş ve eksiktir. Kötü aktörlerin işlem hattınızda kötü amaçlı kod çalıştırmasını önlemek istediğiniz için derleme ve yayın ortamları da korunmalıdır.

Uygulamanıza tümleştirilmiş her bileşenin güncel envanterini koruma

Bir uygulamaya entegre olan her yeni bileşen saldırı yüzeyini artırır. Yeni bileşenler eklendiğinde veya güncelleştirildiğinde uygun sorumluluk ve uyarı sağlamak için bu bileşenlerin envanterine sahip olmanız gerekir. Derleme ortamının dışında depolayın. Düzenli olarak, bildiriminizin derleme sürecinizdekiyle eşleştiğinden emin olun. Bunun yapılması arka kapı veya başka kötü amaçlı yazılım içeren yeni bileşenlerin beklenmedik şekilde eklenmesini önlemeye yardımcı olur.

İşlem hattı görevleri

  • Azure Market gibi güvenilen kaynaklardan işlem hattınızdaki görevleri çekin. İşlem hattı satıcınız tarafından yazılan görevleri çalıştırın. GitHub görevlerini veya GitHub Actions öneririz. GitHub iş akışlarını kullanıyorsanız Microsoft tarafından yazılmış görevleri tercih edin. Ayrıca, işlem hattınızın güvenlik bağlamında çalıştıkları için görevleri doğrulayın.

  • İşlem hattı gizli dizileri. İşlem hattı içinde çalışan dağıtım varlıkları, bu işlem hattındaki tüm gizli dizilere erişebilir. Gereksiz yere maruz kalmamak için işlem hattının farklı aşamaları için uygun segmentasyona sahip olun. İşlem hattında yerleşik olarak bulunan gizli dizi depolarını kullanın. Bazı durumlarda gizli dizileri kullanmaktan kaçınabileceğinizi unutmayın. İş yükü kimliklerinin (işlem hattı kimlik doğrulaması için) ve yönetilen kimliklerin (hizmet-hizmet kimlik doğrulaması için) kullanımını keşfedin.

Farklı ortamları ayrı tutma

Farklı ortamlarda kullanılan veriler ayrı tutulmalıdır. Üretim verileri daha düşük ortamlarda kullanılmamalıdır çünkü bu ortamlar, üretimin sahip olduğu katı güvenlik denetimlerine sahip olmayabilir. Üretim dışı bir uygulamadan üretim veritabanına bağlanmaktan kaçının ve üretim dışı bileşenleri üretim ağlarına bağlamaktan kaçının.

Aşamalı pozlama

Seçilen ölçütlere göre kullanıcıların bir alt kümesine yayın özelliklerine aşamalı olarak maruz kalma özelliğini kullanın. Sorun varsa, etki bu kullanıcılar için en aza indirilir. Bu yaklaşım, yüzey alanını azalttığı için yaygın bir risk azaltma stratejisidir. Özellik olgunlaştıkça ve güvenlik güvencelerine daha fazla güvendiğinizde, bunu aşamalı olarak daha geniş bir kullanıcı kümesine bırakabilirsiniz.

Üretim aşaması

Üretim aşaması , güvenlik açıklarını düzeltmek için son sorumlu fırsatı sunar. Üretimde yayınlanan altın resmin kaydını tutun.

Sürümlenmiş yapıtları koruma

Dağıtılan tüm varlıkların ve sürümlerinin kataloğunu tutun. Bu bilgiler olay önceliklendirmesi sırasında, sorunları hafifletirken ve sistemi yeniden çalışma durumuna getirdiğinizde yararlıdır. Sürüme alınan varlıklar, yayımlanan Ortak Güvenlik Açıkları ve Etkilenmeler (CVE) bildirimleriyle de karşılaştırılabilir. Bu karşılaştırmaları gerçekleştirmek için otomasyon kullanmalısınız.

Acil durum düzeltmeleri

Otomatik işlem hattı tasarımınız hem normal hem de acil durum dağıtımlarını destekleme esnekliğine sahip olmalıdır. Bu esneklik, hızlı ve sorumlu güvenlik düzeltmelerini desteklemek için önemlidir.

Bir yayın genellikle birden çok onay geçidiyle ilişkilendirilir. Güvenlik düzeltmelerini hızlandırmak için acil durum süreci oluşturmayı göz önünde bulundurun. Süreç, ekipler arasında iletişim içerebilir. İşlem hattı, normal dağıtım yaşam döngüsünün dışında gerçekleşen güvenlik düzeltmelerini, kritik hataları ve kod güncelleştirmelerini ele alan hızlı ileri ve geri alma dağıtımlarına izin vermelidir.

Not

Güvenlik düzeltmelerinin önceliklerini her zaman kolaylık yerine belirleyin. Bir güvenlik düzeltmesi bir regresyon veya hataya neden olmamalıdır. Acil durum işlem hattı aracılığıyla düzeltmeyi hızlandırmak istiyorsanız hangi otomatikleştirilmiş testlerin atlanabileceğini dikkatle göz önünde bulundurun. Her testin değerini yürütme süresine göre değerlendirin. Örneğin, birim testleri genellikle hızlı bir şekilde tamamlar. Tümleştirme veya uçtan uca testler uzun süre çalıştırılabilir.

Bakım aşaması

Bu aşamanın amacı , güvenlik duruşunun zaman içinde bozulmamasını sağlamaktır. SDLC sürekli çevik bir işlemdir. Gereksinimler zamanla değiştiğinden, önceki aşamalarda ele alınan kavramlar bu aşamaya uygulanır.

Düzeltme eki yönetimi. Güvenlik yamaları ve güncelleştirmeleri ile yazılım, kitaplık ve altyapı bileşenlerini güncel tutun.

Sürekli geliştirme. Kod incelemelerini, geri bildirimleri, öğrenilen dersleri ve gelişen tehditleri hesaba katarak yazılım geliştirme sürecinin güvenliğini sürekli değerlendirin ve geliştirin.

Eski veya artık kullanımda olmayan eski varlıkların yetkisini alın. Bunu yapmak, uygulamanın yüzey alanını azaltır.

Bakım, olay düzeltmelerini de içerir. Üretimde sorunlar bulunursa, yinelenmemeleri için hemen işlemle yeniden tümleştirilmesi gerekir.

Tehdit ortamına ayak uydurmak için güvenli kodlama uygulamalarınızı sürekli geliştirin.

Azure kolaylaştırma

Microsoft Güvenlik Geliştirme Yaşam Döngüsü (SDL), geliştirme yaşam döngünüze uygulayabileceğiniz güvenli uygulamalar önerir. Daha fazla bilgi için bkz. Microsoft Güvenlik Geliştirme Yaşam Döngüsü.

DevOps için Defender ve SAST araçları, GitHub Advanced Security veya Azure DevOps'un bir parçası olarak dahil edilir. Bu araçlar, kuruluşunuz için güvenlik puanını izlemenize yardımcı olabilir.

Şu kaynaklarda açıklanan Azure güvenlik önerilerini izleyin:

Kaynak kodunda kimlik bilgilerini bulmak için GitHub Advanced Security ve OWASP kaynak kodu çözümleme araçları gibi araçları kullanmayı göz önünde bulundurun.

Uygulamanızdaki herhangi bir açık kaynak kodun güvenliğini doğrulayın. Bu ücretsiz araçlar ve kaynaklar değerlendirmenizde size yardımcı olabilir:

Güvenlik denetim listesi

Önerilerin tamamına bakın.