سي# ريجيڪس - سي# لاءِ ريجيڪس - ريجيڪس سي#

سي # ريجيڪس ڊو ايس: جڏهن نمونا حملي آور ویکٹر بڻجي ويندا آهن

جڏهن باقاعده اظهار ڪارڪردگي جي خلاف ٿي ويندا آهن  

سي # ريجيڪس جي هڪ لائن پيداوار API کي گوڏن ڀر ڪري سگهي ٿي. خراب لکيل نمونا تباهي واري پوئتي ٽريڪنگ، سي پي يو سائيڪلن کي ساڙڻ، ۽ موضوعن کي لاڪ ڪرڻ کي متحرڪ ڪن ٿا. هي ڪلاسيڪل آهي. باقاعده اظهار سروس کان انڪار (ReDoS)، توهان جي ڪوڊ ۾ لڪيل هڪ نفيس پر خطرناڪ حملي وارو ویکٹر.

⚠️غير محفوظ مثال، صرف تعليمي مقصدن لاءِ. پيداوار ۾ استعمال نه ڪريو.

string pattern = @"(a+)+$";  // Vulnerable regex c# Regex regex = new Regex(pattern); bool isMatch = regex.IsMatch("aaaaaaaaaaaaaaaaaaaaaaaa!"); 

سي # لاءِ هي ريجيڪس نيسٽڊ ڪوانٽيفائرز کان متاثر آهي جيڪي ايڪسپونشنل بيڪ ٽريڪنگ جو سبب بڻجن ٿا. هڪ ڊگهو، خراب اسٽرنگ هڪ اينڊ پوائنٽ يا مائڪرو سروس کي منجمد ڪري سگهي ٿو.

محفوظ نسخو:

string pattern = @"^a+$";  // Safe simplified regex for C# Regex regex = new Regex(pattern, RegexOptions.Compiled, TimeSpan.FromMilliseconds(200)); bool isMatch = regex.IsMatch("aaaaaaaaaaa"); 

تعليمي نوٽ: هميشه ٽائم آئوٽ استعمال ڪريو (ريجيڪس آپشنز + وقت جي مدت) ۽ نيسٽڊ گروپن کي آسان بڻايو. ريجيڪس سي # ۾، ڪارڪردگي جي تصديق هڪ سيڪيورٽي گهرج آهي، هڪ اصلاح نه.

ڇو سي # ريجيڪس پيٽرن ڪمزور ٿي ويندا آهن

مبهم مقداري (.*, .+، يا (الف+)+) ۽ بيحد ورجاءُ ريجيڪس کي هڪ عام DoS ٽارگيٽ بڻائي ٿو.
جڏهن اهي صارف جي بنياد تي هلندڙ تناظر ۾ ظاهر ٿين ٿا، جهڙوڪ ان پٽ جي تصديق يا لاگ پارسنگ، هڪ واحد تيار ڪيل پيل لوڊ سي پي يو تي اجارداري ڪري سگهي ٿو.

⚠️غير محفوظ مثال، صرف تعليمي مقصدن لاءِ. پيداوار ۾ استعمال نه ڪريو.

// Vulnerable email validation regex for C# var pattern = @"^([a-zA-Z0-9_\-\.]+)@([\w\-]+\.)+([a-zA-Z]{2,4})$"; var input = "a".PadLeft(10000, 'a') + "@example.com"; Regex.IsMatch(input, pattern);  // May hang or cause ReDoS 

محفوظ نسخو:

// Safer regex c# pattern var pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$"; Regex regex = new Regex(pattern, RegexOptions.Compiled, TimeSpan.FromMilliseconds(300)); bool isValid = regex.IsMatch("user@example.com"); 

تعليمي نوٽ: مبهم ورجاءُ کان پاسو ڪريو، ان پٽ سائيز کي محدود ڪريو، ۽ هميشه لوڊ هيٺ ريگيڪس ڪارڪردگي کي بينچ مارڪ ڪريو. پيداوار ۾ گارڊز جي طور تي فنڪشنل سنيپٽ، ٽائم آئوٽ لاڳو ڪرڻ ۽ وڌ ۾ وڌ ان پٽ ڊيگهه.

APIs ۾ حقيقي اثر ۽ CI/CD ورڪشاپ

سي # لاءِ غير محفوظ ريجيڪس صرف تصديق فارمن تائين محدود ناهي. ڊولپرز لاگ فلٽرز، ويب هُڪ ميچرز، ۽ خودڪار اسڪين ۾ نمونن کي شامل ڪندا آهن. ان ۾ CI/CD، هڪ غير محفوظ نمونو سڄي کي روڪي سگهي ٿو pipeline.

⚠️غير محفوظ مثال، صرف تعليمي مقصدن لاءِ. پيداوار ۾ استعمال نه ڪريو.

// Regex used to match commit messages in a CI job var regex = new Regex(userInputPattern); if (regex.IsMatch(commitMessage)) { /* process */ } If userInputPattern contains (a+)+$, it can freeze the build agent.

ڪڏهن به صارف پاران فراهم ڪيل ريجيڪس کي تصديق يا وقت ختم ٿيڻ جي ڪنٽرول کان سواءِ پروسيس نه ڪريو.

محفوظ نسخو:

// Safe usage in CI/CD context if (userInputPattern.Length < 100 && !userInputPattern.Contains("++")) {     Regex regex = new Regex(userInputPattern, RegexOptions.Compiled, TimeSpan.FromMilliseconds(100));     if (regex.IsMatch(commitMessage)) { /* safely process */ } } 

تعليمي نوٽ: عمل ڪرڻ کان اڳ خارجي ريجيڪس ان پٽ جي تصديق ڪريو. واضح ڊيگهه چيڪ شامل ڪريو ۽ ٽائم آئوٽ لاڳو ڪريو pipelines.

سي# ريجيڪس ڊو ايس کي روڪڻ لاءِ محفوظ طريقا

ريجيڪس سي# ۾ ري ڊو ايس جي روڪٿام کي توهان جي ترقي ۾ شامل ڪيو وڃي ۽ DevSecOps ورڪ فلو. هتي ڊفالٽ طور تي ان کي محفوظ بڻائڻ جو طريقو آهي:

بهترين طريقا

  1. هميشه ٽائم آئوٽ مقرر ڪريو سڀني ريجيڪس جائزي تي.
  2. تباهي واري نمونن کان پاسو ڪريو، ڪوبه نيسٽڊ ڪوانٽيفائر يا مبهم گروپ نه.
  3. ان پٽ سائيز کي محدود ڪريو ريجيڪس ڏانهن وڃڻ کان اڳ.
  4. قابل اعتماد نمونن کي اڳ ۾ گڏ ڪريو سان RegexOptions.Compiled.
  5. استعمال ڪندڙ پاران فراهم ڪيل اظهار کي صاف ڪريو يا اجازت ڏنل نمونن کي وائيٽ لسٽ ڪريو.

ننڍي بچاءُ واري چيڪ لسٽ

  • پنهنجي ڪوڊ بيس ۾ C# استعمال لاءِ هر ريجيڪس جو جائزو وٺو.
  • درخواست ڏيو وقت جي مدت مسلسل وقت ختم ٿيڻ.
  • API ۽ CI ان پٽن تي ان پٽ جي ڊيگهه کي محدود ڪريو.
  • رليز کان اڳ ريجيڪس ڪارڪردگي جي جانچ ڪريو.
  • جامد ريجيڪس کي خودڪار بڻايو اسڪيننگ ان CI/CD.

تعليمي نوٽ: ريجيڪس نمونن کي غير اعتباري ڪوڊ سمجهو. اهي SQL يا ڪمانڊ ايگزيڪيوشن وانگر ساڳئي جاچ جا مستحق آهن.

زائيگيني ڪيئن خطرناڪ سي # ريجيڪس استعمال کي ڳولي ٿو

زائيگيني Code Security جامد تجزيو دوران خودڪار طريقي سان غير محفوظ ريجيڪس سي # نمونن کي ڳولي ٿو. اهو تباهي واري پوئتي هٽڻ، گم ٿيل ٽائيم آئوٽ، ۽ نمونن جي سڃاڻپ ڪري ٿو جيڪي خدمتن کي معطل ڪرڻ جو امڪان رکن ٿا. In CI/CD, زائيگيني طور ڪم ڪري ٿو DevSecOps گيٽ، سي # لاءِ غير محفوظ ريجيڪس کي بلاڪ ڪرڻ کان اڳ ان جي ضم ٿيڻ يا ڊيپلائي ڪرڻ.

# Never expose real tokens, credentials, or internal URLs in pipelines - name: Regex Safety Scan   run: dotnet xygeni validate --rules regex ,performance --fail-on-risk

تعليمي نوٽ: زائيگيني کي ضم ڪرڻ سان بلڊز ۽ ماحول ۾ محفوظ ريجيڪس هينڊلنگ يقيني بڻائي ٿي، ڊيپلائيمينٽ کان اڳ ريگريشن ۽ ڊي او ايس جي نمائش کي روڪي ٿي.

توهان جو ريجيڪس طاقتور آهي، پڪ ڪريو ته اهو هٿيارن سان ڀريل نه آهي.

ReDoS ڪمزوريون معصوم نظر ايندڙ C# ريجيڪس کي سروس کان انڪار ڪندڙ هٿيار ۾ تبديل ڪن ٿيون. سي # نمونن لاءِ غير محفوظ ريجيڪس هڪ عام نگراني آهي، جيستائين اهي پيداوار کي منجمد نه ڪن يا ٽٽي نه وڃن. CI/CD.

ريجيڪس حفاظت کي پنهنجي ڪوڊنگ صفائي جو حصو بڻايو:

  • هميشه ٽائم آئوٽ استعمال ڪريو.
  • نيسٽڊ ڪوانٽيفائرز کان پاسو ڪريو.
  • استعمال ڪندڙ جي داخلا کي محدود ڪريو.
  • خودڪار چڪاس استعمال ڪندي Xygeni Code Security.

ريجيڪس هميشه طاقتور هوندو، پر محتاط ڊيزائن سان، توهان جا ريجيڪس سي # نمونا توهان جي ايندڙ واقعي جي رپورٽ نه بڻجي سگهندا.

اسڪا-ٽولز-سافٽ ويئر-ڪمپوزيشن-تجزيو-ٽولز
پنهنجي سافٽ ويئر خطرن کي ترجيح ڏيو، درست ڪريو، ۽ محفوظ ڪريو
پنهنجو مفت اڪائونٽ حاصل ڪريو.
ڪنهن به ڪريڊٽ ڪارڊ جي ضرورت نه آهي.

پنهنجي سافٽ ويئر ڊولپمينٽ ۽ پهچائڻ کي محفوظ بڻايو

زائيگيني پراڊڪٽ سوٽ سان