Düzenli İfadeler Performansa Zarar Verdiğinde
Tek bir C# regex satırı, üretimdeki bir API'yi çökertebilir. Kötü yazılmış kalıplar, felaket niteliğinde geri izlemeye yol açarak CPU döngülerini tüketir ve iş parçacıklarını kilitler. Bu, klasik bir örnektir. Düzenli İfadeye Dayalı Hizmet Reddi (ReDoS), kodunuzda gizlenmiş, incelikli ancak tehlikeli bir saldırı yöntemidir.
⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.
C# için geliştirilen bu düzenli ifade, üstel geri izlemeye neden olan iç içe niceleyiciler içerir. Uzun ve kötü amaçlı bir dize, bir uç noktayı veya mikro hizmeti dondurabilir.
Güvenli sürüm:
Eğitim notu: Her zaman zaman aşımı kullanın (RegexSeçenekleri + Zaman aralığı) ve iç içe grupları basitleştirir. C# regex'te performans doğrulaması bir güvenlik gereksinimidir, bir optimizasyon değil.
C# Regex Kalıpları Neden Güvenlik Açığı Kazanıyor?
Belirsiz nicelik belirleyiciler (.*, .+ya da (a+)+Sınırsız tekrarlama özelliği, düzenli ifadeleri (regex) yaygın bir DoS hedefi haline getiriyor.
Bu tür saldırılar, girdi doğrulama veya günlük ayrıştırma gibi kullanıcı odaklı bağlamlarda ortaya çıktığında, tek bir özel olarak hazırlanmış saldırı işlemci kaynaklarını tekeline alabilir.
⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.
Güvenli sürüm:
Eğitim notu: Belirsiz tekrarlardan kaçının, girdi boyutunu sınırlayın ve düzenli ifadelerin performansını her zaman yük altında karşılaştırın. İşlevsel kod parçası; üretim ortamında zaman aşımı ve maksimum giriş uzunluğu sınırlarını koruyucu mekanizma olarak uygular.
API'lerde Gerçek Etki ve CI/CD İş Akışları
C# için güvenli olmayan düzenli ifadeler yalnızca doğrulama formlarıyla sınırlı değildir. Geliştiriciler, kalıpları günlük filtrelerine, webhook eşleştiricilerine ve otomatik taramalara yerleştirirler. CI/CDTek bir güvensiz hareket tüm süreci durdurabilir. pipeline.
⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.
Kullanıcı tarafından sağlanan düzenli ifadeleri doğrulama veya zaman aşımı kontrolü olmadan asla işlemeyin.
Güvenli sürüm:
Eğitim notu: Yürütmeden önce harici regex girişini doğrulayın. Açık uzunluk kontrolleri ekleyin ve zaman aşımı sürelerini zorunlu kılın. pipelines.
C# Regex DoS Saldırılarını Önlemek İçin Güvenli Uygulamalar
C# dilinde regex ile ReDoS saldırılarını önleme, geliştirme sürecinize entegre edilmelidir. DevSecOps iş akışı. İşte varsayılan olarak güvenli hale getirmenin yolu:
En İyi Uygulamalar
- Her zaman zaman aşımı süreleri belirleyin. tüm regex değerlendirmelerinde.
- Felaketle sonuçlanabilecek kalıplardan kaçının.İç içe geçmiş niceleyiciler veya belirsiz gruplar yok.
- Giriş boyutunu sınırlayın regex'e geçmeden önce.
- Güvenilir kalıpları önceden derleyin 'da RegexOptions.Derlenmiş.
- Kullanıcı tarafından sağlanan ifadeleri temizleyin. veya izin verilen kalıpları beyaz listeye ekleyin.
Mini önleyici kontrol listesi
- Kod tabanınızdaki C# kullanımına ilişkin her bir düzenli ifadeyi gözden geçirin.
- Uygula Zaman aralığı Sürekli olarak zaman aşımı yaşıyor.
- API ve CI girişlerinde giriş uzunluklarını kısıtlayın.
- Yayınlamadan önce regex performansını test edin.
- Statik düzenli ifadeleri otomatikleştirin tarama CI/CD.
Eğitim notu: Düzenli ifade kalıplarını güvenilmez kod olarak değerlendirin. SQL veya komut yürütme ile aynı incelemeyi hak ediyorlar.
Xygeni, C#'da Riskli Regex Kullanımını Nasıl Tespit Ediyor?
Xygeni Code Security Statik analiz sırasında güvenli olmayan C# regex kalıplarını otomatik olarak algılar. Bu, felaketle sonuçlanabilecek geri dönüşleri, zaman aşımı hatalarını ve hizmetlerin kilitlenmesine yol açabilecek kalıpları belirler. In CI/CD, Xygeni gibi davranır DevSecOps kapısıC# için güvenli olmayan düzenli ifadelerin birleştirme veya dağıtım işleminden önce engellenmesi.
Eğitim notu: Xygeni'nin entegrasyonu, derlemeler ve ortamlar genelinde güvenli regex işlemeyi sağlayarak, dağıtımdan önce gerilemeleri ve DoS saldırılarını önler.
Düzenli ifadeniz güçlü, silah olarak kullanılmadığından emin olun.
ReDoS güvenlik açıkları, masum görünümlü C# düzenli ifadelerini hizmet reddi saldırısı silahına dönüştürüyor. C# kalıpları için güvenli olmayan düzenli ifadeler, üretim süreçlerini dondurana veya bozana kadar sık yapılan bir hatadır. CI/CD.
Düzenli ifade güvenliğini kodlama hijyeninizin bir parçası haline getirin:
- Zaman aşımı sürelerini mutlaka kullanın.
- İç içe niceleyicilerden kaçının.
- Kullanıcı girişini kısıtla.
- Kontrolleri otomatikleştirin Xygeni Code Security.
Düzenli ifadeler her zaman güçlü olacaktır, ancak dikkatli bir tasarımla, C# düzenli ifade kalıplarınız bir sonraki olay raporunuzun konusu olmayacaktır.





