როდესაც რეგულარული გამოსახულებები ეწინააღმდეგება შესრულებას
C# რეგულარული კოდის ერთ ხაზსაც კი შეუძლია საწარმოო API-ის დაჩოქება. ცუდად დაწერილი შაბლონები იწვევს კატასტროფულ უკუქცევას, პროცესორის ციკლების დაწვას და ნაკადების დაბლოკვას. ეს კლასიკურია. რეგულარული გამოთქმის მომსახურების უარყოფა (ReDoS), თქვენს კოდში დამალული დახვეწილი, მაგრამ საშიში შეტევის ვექტორი.
⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.
C#-ის ეს რეგულარული ენა განიცდის ჩადგმული კვანტიფიკატორებისგან, რომლებიც იწვევენ ექსპონენციალურ უკუქცევას. გრძელ, მავნე სტრიქონს შეუძლია ბოლო წერტილის ან მიკროსერვისის გაყინვა.
უსაფრთხო ვერსია:
საგანმანათლებლო შენიშვნა: ყოველთვის გამოიყენეთ ტაიმ-აუტები (RegexOptions + დროის ინტერვალი) და ჩადგმული ჯგუფების გამარტივება. რეგულარულ C#-ში შესრულების ვალიდაცია უსაფრთხოების მოთხოვნაა და არა ოპტიმიზაცია.
რატომ ხდება C# Regex ნიმუშები დაუცველი
ორაზროვანი კვანტიფიკატორები (.*, .+, ან (ა+)+) და შეუზღუდავი გამეორება რეგულარულ ტექსტს საერთო DoS სამიზნედ აქცევს.
როდესაც ეს ხდება მომხმარებლის მიერ მართულ კონტექსტში, როგორიცაა შეყვანის ვალიდაცია ან ჟურნალის დამუშავება, ერთ შექმნილ დატვირთვას შეუძლია CPU-ს მონოპოლიზაცია.
⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.
უსაფრთხო ვერსია:
საგანმანათლებლო შენიშვნა: მოერიდეთ ორაზროვან გამეორებას, შეზღუდეთ შეყვანის ზომა და ყოველთვის შეამოწმეთ რეგულარული კომუნიკაციის შესრულება დატვირთვის ქვეშ. ფუნქციური სნიპეტი, ტაიმაუტების აღსრულება და შეყვანის მაქსიმალური სიგრძე, როგორც მცველები წარმოებაში.
რეალური გავლენა API-ებსა და CI/CD Workflows
C#-ისთვის სახიფათო რეგულარული სქემები არ შემოიფარგლება მხოლოდ ვალიდაციის ფორმებით. დეველოპერები შაბლონებს რთავენ ჟურნალის ფილტრებში, ვებჰუკების შესაბამის სისტემებსა და ავტომატურ სკანირებაში. CI/CDერთი სახიფათო ნიმუში შეიძლება მთელი პროცესის შეფერხებას იწვევდეს pipeline.
⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.
არასოდეს დაამუშაოთ მომხმარებლის მიერ მოწოდებული რეგულარული სიმბოლოები ვალიდაციის ან დროის ამოწურვის კონტროლის გარეშე.
უსაფრთხო ვერსია:
საგანმანათლებლო შენიშვნა: შესრულებამდე გარე რეგულარული შეყვანის დადასტურება. დაამატეთ სიგრძის ექსპლიციტური შემოწმებები და დროის ამოწურვის აღსრულება pipelines.
უსაფრთხო პრაქტიკა C# Regex DoS-ის თავიდან ასაცილებლად
Regex C#-ში ReDoS-ის პრევენცია თქვენს შემუშავებაში უნდა იყოს გათვალისწინებული. DevSecOps-ის სამუშაო პროცესი. აი, როგორ გავხადოთ ის უსაფრთხო ნაგულისხმევად:
საუკეთესო პრაქტიკა
- ყოველთვის დააყენეთ ტაიმ-აუტები ყველა რეგულარული შეფასებისას.
- კატასტროფული სქემების თავიდან აცილება, არ არსებობს ჩადგმული კვანტიფიკატორები ან ორაზროვანი ჯგუფები.
- შეყვანის ზომის შეზღუდვა რეგულარულ რეჟიმში გადასვლამდე.
- სანდო შაბლონების წინასწარი კომპილაცია ერთად RegexOptions.Compiled.
- მომხმარებლის მიერ მოწოდებული გამოთქმების დეზინფექცია ან დაშვებული შაბლონების თეთრ სიაში შეყვანა.
მინი პრევენციული საკონტროლო სია, რომელიც მოიცავს მინი პრევენციულ სიას.
- გადახედეთ თქვენს კოდის ბაზაში C# გამოყენების ყველა რეგულარულ ხაზს.
- მიმართვა დროის ინტერვალი მუდმივად ტაიმ-აუტები.
- API და CI შეყვანებზე შეყვანის სიგრძის შეზღუდვა.
- გამოშვებამდე შეამოწმეთ რეგულარული ვერსიის მუშაობა.
- სტატიკური რეგულარული მნიშვნელობის ავტომატიზაცია სკანირება CI/CD.
საგანმანათლებლო შენიშვნა: რეგულარული სქემების შაბლონები არასანდო კოდად მოეპყარით. ისინი ისეთივე ყურადღებით უნდა მოეკიდონ, როგორც SQL ან ბრძანებების შესრულება.
როგორ ავლენს Xygeni სარისკო C# Regex გამოყენებას
ქსიგენი Code Security სტატიკური ანალიზის დროს ავტომატურად აფიქსირებს არაუსაფრთხო რეგულარული C# შაბლონებს. ის ადგენს კატასტროფულ უკუქცევას, დროის ამოწურვის გამოტოვებას და სერვისების გაჭედვის სავარაუდო ნიმუშებს. In CI/CD, ქსიგენი მოქმედებს, როგორც ა DevSecOps კარიბჭე, რომელიც ბლოკავს C#-ისთვის არაუსაფრთხო რეგულარულ სქემს მის შერწყმამდე ან განლაგებამდე.
საგანმანათლებლო შენიშვნა: Xygeni-ს ინტეგრირება უზრუნველყოფს რეგულარული სიგნალების უსაფრთხო დამუშავებას სხვადასხვა კონსტრუქციებსა და გარემოში, რაც ხელს უშლის რეგრესიებს და DoS ზემოქმედებას განლაგებამდე.
თქვენი რეგექსი ძლიერია, დარწმუნდით, რომ ის იარაღით არ არის აღჭურვილი
ReDoS-ის დაუცველობები უდანაშაულო გარეგნობის C# რეგულარულ კოდს მომსახურების უარყოფის იარაღად აქცევს. C# შაბლონებისთვის არაუსაფრთხო რეგულარული კოდირება გავრცელებული შეცდომაა, სანამ ისინი არ გაყინავენ წარმოებას ან არ გაფუჭდებიან. CI/CD.
რეგულარული კომუნიკაციის უსაფრთხოება თქვენი კოდირების ჰიგიენის ნაწილად აქციეთ:
- ყოველთვის გამოიყენეთ ტაიმ-აუტები.
- მოერიდეთ ჩადგმულ კვანტიფიკატორებს.
- შეზღუდეთ მომხმარებლის შეყვანა.
- შემოწმების ავტომატიზაცია გამოყენებით Xygeni Code Security.
Regex ყოველთვის ძლიერი იქნება, მაგრამ ფრთხილად დიზაინის შემთხვევაში, თქვენი regex C # შაბლონები არ გახდება თქვენი შემდეგი ინციდენტის ანგარიში.





