c# regex - regex សម្រាប់ c# - regex c#

C# Regex DoS៖ នៅពេលដែលលំនាំក្លាយជាវ៉ិចទ័រវាយប្រហារ

​មាតិកា

ប្រកាសដែលត្រូវតែអាន

ប្រកាសថ្មីៗបំផុតដែលគួរឱ្យចាប់អារម្មណ៍

នៅពេលដែលកន្សោមធម្មតាប្រែទៅជាផ្ទុយនឹងដំណើរការ  

បន្ទាត់តែមួយនៃ regex C# អាចធ្វើឱ្យ API ផលិតកម្មបរាជ័យ។ លំនាំដែលសរសេរមិនបានល្អបង្កឱ្យមានការថយក្រោយដ៏មហន្តរាយ ការដុតវដ្ត CPU និងការចាក់សោខ្សែស្រឡាយ។ នេះគឺជាបុរាណ។ ការបដិសេធសេវាកម្មនៃកន្សោមធម្មតា (ReDoS) ដែលជាវ៉ិចទ័រវាយប្រហារដ៏គ្រោះថ្នាក់ ប៉ុន្តែមានល្បិចកល ដែលលាក់នៅក្នុងកូដរបស់អ្នក។

⚠️ឧទាហរណ៍មិនមានសុវត្ថិភាព សម្រាប់គោលបំណងអប់រំតែប៉ុណ្ណោះ។ កុំប្រើក្នុងផលិតកម្ម។

regex សម្រាប់ C# នេះមានបញ្ហាជាមួយ nested quantifiers ដែលបណ្តាលឱ្យមានការ backtrack អិចស្ប៉ូណង់ស្យែល។ ខ្សែអក្សរវែង និងព្យាបាទអាចបង្កកចំណុចបញ្ចប់ ឬមីក្រូសេវាកម្ម។

កំណែសុវត្ថិភាព៖

កំណត់ចំណាំអប់រំ៖ តែងតែប្រើការអស់ពេល (ជម្រើស Regex + TimeSpan) និងធ្វើឱ្យក្រុមដែលដាក់ក្នុងគ្នាមានភាពសាមញ្ញ។ នៅក្នុង regex c# ការផ្ទៀងផ្ទាត់ដំណើរការគឺជាតម្រូវការសុវត្ថិភាព មិនមែនជាការបង្កើនប្រសិទ្ធភាពទេ។

ហេតុអ្វីបានជាលំនាំ Regex C# ក្លាយជាងាយរងគ្រោះ

សញ្ញាបរិមាណមិនច្បាស់លាស់ (.*, .+(អា+)+) និង​ការ​ធ្វើ​ឡើង​វិញ​គ្មាន​ដែន​កំណត់​ធ្វើ​ឱ្យ regex ក្លាយ​ជា​គោលដៅ DoS ទូទៅ។
នៅពេលដែលទាំងនេះលេចឡើងក្នុងបរិបទដែលជំរុញដោយអ្នកប្រើប្រាស់ ដូចជាការផ្ទៀងផ្ទាត់ការបញ្ចូល ឬការវិភាគកំណត់ហេតុ បន្ទុកទិន្នន័យដែលបង្កើតឡើងតែមួយអាចគ្រប់គ្រង CPU បាន។

⚠️ឧទាហរណ៍មិនមានសុវត្ថិភាព សម្រាប់គោលបំណងអប់រំតែប៉ុណ្ណោះ។ កុំប្រើក្នុងផលិតកម្ម។

កំណែសុវត្ថិភាព៖

កំណត់ចំណាំអប់រំ៖ ជៀសវាងការធ្វើម្តងទៀតដែលមិនច្បាស់លាស់ ដាក់កម្រិតទំហំធាតុចូល និងតែងតែធ្វើការប្រៀបធៀបដំណើរការ regex ក្រោមបន្ទុក។ អត្ថបទ​សង្ខេប​មុខងារ អនុវត្ត​ការ​អស់​ពេល និង​ប្រវែង​បញ្ចូល​អតិបរមា​ជា​ឧបករណ៍​ការពារ​ក្នុង​ផលិតកម្ម។

ផលប៉ះពាល់ពិតប្រាកដនៅក្នុង APIs និង CI/CD លំហូរការងារ

regex ដែលមិនមានសុវត្ថិភាពសម្រាប់ C# មិនត្រូវបានកំណត់ចំពោះទម្រង់សុពលភាពនោះទេ។ អ្នកអភិវឌ្ឍន៍បង្កប់លំនាំនៅក្នុងតម្រងកំណត់ហេតុ ឧបករណ៍ផ្គូផ្គង webhook និងការស្កេនដោយស្វ័យប្រវត្តិ។ CI/CDគំរូ​មិន​មាន​សុវត្ថិភាព​មួយ​អាច​រារាំង​ដំណើរការ​ទាំងមូល pipeline.

⚠️ឧទាហរណ៍មិនមានសុវត្ថិភាព សម្រាប់គោលបំណងអប់រំតែប៉ុណ្ណោះ។ កុំប្រើក្នុងផលិតកម្ម។

កុំដំណើរការ regex ដែលផ្គត់ផ្គង់ដោយអ្នកប្រើប្រាស់ដោយគ្មានការផ្ទៀងផ្ទាត់ ឬការគ្រប់គ្រងការអស់ពេល។

កំណែសុវត្ថិភាព៖

កំណត់ចំណាំអប់រំ៖ ផ្ទៀងផ្ទាត់​ការបញ្ចូល regex ខាងក្រៅមុនពេលប្រតិបត្តិ។ បន្ថែមការត្រួតពិនិត្យប្រវែងជាក់លាក់ និងអនុវត្តការអស់ពេលនៅក្នុង pipelines.

ការអនុវត្តប្រកបដោយសុវត្ថិភាពដើម្បីការពារ C# Regex DoS

ការបង្ការ ReDoS នៅក្នុង regex c# គួរតែត្រូវបានបញ្ចូលទៅក្នុងការអភិវឌ្ឍន៍របស់អ្នក និង លំហូរការងារ DevSecOps. នេះជារបៀបធ្វើឱ្យវាមានសុវត្ថិភាពតាមលំនាំដើម៖

ការអនុវត្តល្អបំផុត

  1. កំណត់ពេលវេលាអស់ជានិច្ច លើការវាយតម្លៃ regex ទាំងអស់។
  2. ជៀសវាងគំរូមហន្តរាយគ្មាន​ឧបករណ៍​វាស់​បរិមាណ​ដែល​នៅ​ជាប់​គ្នា ឬ​ក្រុម​មិន​ច្បាស់លាស់​ទេ។
  3. កំណត់ទំហំបញ្ចូល មុនពេលបញ្ជូនទៅ regex។
  4. ចងក្រង​លំនាំ​ដែល​ទុកចិត្ត​ជាមុន ជាមួយ RegexOptions.Compiled.
  5. សម្អាត​កន្សោម​ដែល​ផ្តល់​ដោយ​អ្នកប្រើប្រាស់ ឬដាក់បញ្ជីសសម្រាប់លំនាំដែលត្រូវបានអនុញ្ញាត។

បញ្ជីត្រួតពិនិត្យបង្ការខ្នាតតូច

  • ពិនិត្យមើល regex នីមួយៗសម្រាប់ការប្រើប្រាស់ C# នៅក្នុងមូលដ្ឋានកូដរបស់អ្នក។
  • Apply TimeSpan ការអស់ពេលជាប់លាប់។
  • ដាក់កំហិតប្រវែងបញ្ចូលលើធាតុចូល API និង CI។
  • សាកល្បងដំណើរការ regex មុនពេលចេញផ្សាយ។
  • ស្វ័យប្រវត្តិកម្ម regex ឋិតិវន្ត ស្កេនចូល CI/CD.

កំណត់ចំណាំអប់រំ៖ ចាត់ទុកលំនាំ regex ជាកូដដែលមិនគួរឱ្យទុកចិត្ត។ ពួកវាសមនឹងទទួលបានការត្រួតពិនិត្យដូចគ្នានឹង SQL ឬការប្រតិបត្តិពាក្យបញ្ជា។

របៀបដែល Xygeni រកឃើញការប្រើប្រាស់ Regex C# ដែលមានហានិភ័យ

ស៊ីហ្គេនី Code Security រកឃើញលំនាំ regex C# ដែលមិនមានសុវត្ថិភាពដោយស្វ័យប្រវត្តិក្នុងអំឡុងពេលវិភាគឋិតិវន្ត។ វាកំណត់អត្តសញ្ញាណការថយក្រោយដ៏មហន្តរាយ ការអស់ពេលខកខាន និងគំរូដែលទំនងជាធ្វើឱ្យសេវាកម្មគាំង។ In CI/CD, ស៊ីហ្គេនី ដើរតួជាក ច្រកទ្វារ DevSecOpsរារាំង regex ដែលមិនមានសុវត្ថិភាពសម្រាប់ C# មុនពេលវាបញ្ចូលគ្នា ឬដាក់ពង្រាយ។

កំណត់ចំណាំអប់រំ៖ ការរួមបញ្ចូល Xygeni ធានានូវការគ្រប់គ្រង regex ប្រកបដោយសុវត្ថិភាពនៅទូទាំងការបង្កើត និងបរិស្ថាន ដោយការពារការតំរែតំរង់ និងការប៉ះពាល់ DoS មុនពេលដាក់ពង្រាយ។

Regex របស់អ្នកមានឥទ្ធិពលខ្លាំង ត្រូវប្រាកដថាវាមិនត្រូវបានប្រើប្រាស់អាវុធទេ

ចំណុចខ្សោយ ReDoS ប្រែក្លាយ C# regex ដែលមើលទៅគ្មានកំហុសទៅជាអាវុធបដិសេធសេវាកម្ម។ regex ដែលមិនមានសុវត្ថិភាពសម្រាប់លំនាំ C# គឺជាកំហុសឆ្គងទូទៅ រហូតដល់ពួកវាបង្កកផលិតកម្ម ឬខូច។ CI/CD.

ធ្វើឱ្យសុវត្ថិភាព regex ជាផ្នែកមួយនៃអនាម័យសរសេរកូដរបស់អ្នក៖

  • ប្រើ​ការ​កំណត់​ពេល​វេលា​ជានិច្ច។
  • ជៀសវាង​ឧបករណ៍​វាស់​បរិមាណ​ដែល​ដាក់​គ្នា​។
  • ដាក់កម្រិតការបញ្ចូលរបស់អ្នកប្រើប្រាស់។
  • ការត្រួតពិនិត្យដោយស្វ័យប្រវត្តិដោយប្រើ Xygeni Code Security.

Regex នឹងតែងតែមានអានុភាពខ្លាំង ប៉ុន្តែជាមួយនឹងការរចនាដោយប្រុងប្រយ័ត្ន លំនាំ regex C# របស់អ្នកនឹងមិនក្លាយជារបាយការណ៍ឧប្បត្តិហេតុបន្ទាប់របស់អ្នកទេ។

ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni