ស្គ្រីបឆ្លងគេហទំព័រ (XSS) គឺជាចំណុចខ្សោយមួយដែលអនុញ្ញាតឱ្យអ្នកវាយប្រហារចាក់ស្គ្រីបព្យាបាទចូលទៅក្នុងគេហទំព័រ ស្គ្រីបទាំងនោះបន្ទាប់មកដំណើរការនៅក្នុងកម្មវិធីរុករករបស់អ្នកប្រើប្រាស់ផ្សេងទៀតដូចជាវាជារបស់នៅទីនោះ។ វាត្រូវបានចាត់ថ្នាក់ជាប់លាប់នៅក្នុង OWASP កំពូល ១០ហើយវានៅតែជាវិធីមួយក្នុងចំណោមវិធីទូទៅបំផុតដែលអ្នកវាយប្រហារលួចទិន្នន័យវគ្គ លួចគណនី ឬបំផ្លាញទំនុកចិត្តរបស់កម្មវិធីដោយស្ងាត់ៗជាមួយអ្នកប្រើប្រាស់របស់វា។
SAST ឧបករណ៍នានាគឺជាវិធីមួយដ៏មានប្រសិទ្ធភាពបំផុតក្នុងការចាប់យកចំណុចខ្សោយទាំងនេះឲ្យបានឆាប់រហ័ស ដោយស្កេនកូដប្រភពសម្រាប់លំនាំពិតប្រាកដដែលអនុញ្ញាតឲ្យ XSS រអិលចូលបាន មុនពេលកូដនោះឈានដល់ការផលិត។ នៅក្នុងការបង្ហោះនេះ៖ ប្រភេទ XSS បីប្រភេទដែលជាទូទៅបំផុត របៀបដែលវាមើលទៅដូចជានៅក្នុងកូដពិត និងរបៀប... SAST ឧបករណ៍ (បូករួមទាំងការអនុវត្តការសរសេរកូដមួយចំនួន) បានបិទវាមុនពេលពួកគេដឹកជញ្ជូន។
តើភាពងាយរងគ្រោះរបស់ XSS ជាអ្វី ហើយហេតុអ្វីអ្នកគួរយកចិត្តទុកដាក់?
ចំណុចខ្សោយ XSS កើតឡើងនៅពេលដែលកម្មវិធីទទួលយកការបញ្ចូលដែលមិនគួរឱ្យទុកចិត្ត ដែលជាអ្វីមួយដែលអ្នកប្រើប្រាស់វាយបញ្ចូល បិទភ្ជាប់ ឬបញ្ជូននៅក្នុង URL ហើយបង្ហាញវាត្រឡប់ទៅក្នុងទំព័រវិញដោយមិនបានផ្ទៀងផ្ទាត់ ឬគេចវាឱ្យបានត្រឹមត្រូវជាមុនសិន។ នៅពេលដែលរឿងនោះកើតឡើង អ្នកវាយប្រហារអាចលួចបញ្ចូលស្គ្រីបជំនួសឱ្យអត្ថបទធម្មតា ហើយកម្មវិធីរុករកមិនមានវិធីដើម្បីប្រាប់ពីភាពខុសគ្នានោះទេ៖ វាគ្រាន់តែដំណើរការវា ជាមួយនឹងការជឿទុកចិត្ត និងការអនុញ្ញាតដូចគ្នានឹងទំព័រដែលនៅសល់។
នោះហើយជាអ្វីដែលធ្វើឱ្យ XSS មានគ្រោះថ្នាក់ ទោះបីជាកំហុសមូលដ្ឋានជារឿយៗតូចក៏ដោយ។ វាលបញ្ចូលដែលមិនបានសម្អាតតែមួយអាចអនុញ្ញាតឱ្យអ្នកវាយប្រហារលួចខូឃីស៍វគ្គ និងលួចគណនីដែលបានចូល ប្តូរទិសអ្នកប្រើប្រាស់ដោយស្ងៀមស្ងាត់ទៅកាន់ទំព័របន្លំ កត់ត្រាការចុចគ្រាប់ចុច ឬសរសេរឡើងវិញនូវខ្លឹមសារដែលអ្នកទស្សនាឃើញ ទាំងអស់នេះដោយមិនចាំបាច់ប៉ះម៉ាស៊ីនមេរបស់អ្នកដោយផ្ទាល់ឡើយ។ ភាពងាយរងគ្រោះនេះរស់នៅទាំងស្រុងនៅក្នុងរបៀបដែលកម្មវិធីរុករកទុកចិត្តលើលទ្ធផលរបស់កម្មវិធីរបស់អ្នក។
នេះក៏ជាមូលហេតុដែល XSS លេចឡើងជាញឹកញាប់នៅក្នុង OWASP Top 10៖ វាមិនតម្រូវឱ្យមានខ្សែសង្វាក់កេងប្រវ័ញ្ចដ៏ស្មុគស្មាញនោះទេ គ្រាន់តែមានការបញ្ចូលមួយដែលមើលរំលង ហើយកាំនៃការផ្ទុះពង្រីកដល់អ្នកប្រើប្រាស់គ្រប់រូបដែលផ្ទុកទំព័រដែលរងផលប៉ះពាល់។
ការវាយប្រហារ XSS ត្រូវបានធ្វើឱ្យយល់ច្រឡំ៖ ប្រភេទទូទៅបំផុតទាំងបី
១. XSS ដែលបានរក្សាទុក៖ ការគំរាមកំហែងជាប់លាប់
XSS ដែលបានរក្សាទុកនឹងដាក់ស្គ្រីបព្យាបាទជាអចិន្ត្រៃយ៍នៅលើម៉ាស៊ីនមេ ដូច្នេះវាដំណើរការដោយស្វ័យប្រវត្តិសម្រាប់អ្នកប្រើប្រាស់គ្រប់រូបដែលមើលទំព័រដែលរងផលប៉ះពាល់នៅពេលក្រោយ។
ចំណុចខ្សោយ XSS ដែលបានរក្សាទុកកើតឡើងនៅពេលដែលស្គ្រីបព្យាបាទត្រូវបានរក្សាទុកជាអចិន្ត្រៃយ៍នៅលើម៉ាស៊ីនមេ (ឧទាហរណ៍ នៅក្នុងមូលដ្ឋានទិន្នន័យ) ហើយត្រូវបានប្រតិបត្តិនៅពេលណាដែលអ្នកប្រើប្រាស់ចូលប្រើទំព័រដែលរងផលប៉ះពាល់។
ឧទាហរណ៍ ៖ វាលមតិយោបល់ដែលទទួលយកការបញ្ចូលរបស់អ្នកប្រើប្រាស់ដែលមិនទាន់មានសុពលភាព៖
2. XSS ដែលបានឆ្លុះបញ្ចាំង៖ ផ្តល់ជូនភ្លាមៗ
XSS ដែលឆ្លុះបញ្ចាំងស្ថិតនៅក្នុងតំណភ្ជាប់ដែលបង្កើតឡើងតែមួយ ស្គ្រីបដំណើរការលុះត្រាតែជនរងគ្រោះចុចលើវា ជាធម្មតាតាមរយៈការបន្លំ ឬវិស្វកម្មសង្គម។
XSS ដែលឆ្លុះបញ្ចាំងកើតឡើងនៅពេលដែលស្គ្រីបព្យាបាទត្រូវបានបង្កប់នៅក្នុង URL ហើយត្រូវបានប្រតិបត្តិនៅពេលដែលអ្នកប្រើប្រាស់ធ្វើអន្តរកម្មជាមួយតំណភ្ជាប់ ដែលជាធម្មតាត្រូវបានបញ្ជូនតាមរយៈការបន្លំ ឬវិស្វកម្មសង្គម។
ឧទាហរណ៍ ៖
https://example.com/search?q=
៣. XSS ដែលផ្អែកលើ DOM៖ ការវាយប្រហារដែលលាក់នៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត
XSS ដែលមានមូលដ្ឋានលើ DOM មិនដែលប៉ះពាល់ដល់ម៉ាស៊ីនមេទាល់តែសោះ ស្គ្រីបព្យាបាទដំណើរការផ្នែកខាងម៉ាស៊ីនភ្ញៀវទាំងស្រុង តាមរយៈ JavaScript ដែលគ្រប់គ្រងខ្លឹមសារទំព័រមិនបានល្អ។
ក្នុងប្រភេទនេះ ស្គ្រីបព្យាបាទទាញយកប្រយោជន៍ពីចំណុចខ្សោយនៅក្នុង JavaScript ផ្នែកអតិថិជន ដើម្បីរៀបចំគំរូវត្ថុឯកសារ (DOM)។
ឧទាហរណ៍ ៖ បំណែក JavaScript ដែលបង្ហាញការបញ្ចូលរបស់អ្នកប្រើប្រាស់ដែលមិនបានសម្អាតដោយថាមវន្ត៖
var input = location.hash.substring(1);
document.getElementById("output").innerHTML = input; // Vulnerable
ចង់ដឹងថាតើមានលំនាំទាំងនេះប៉ុន្មានរួចហើយនៅក្នុងមូលដ្ឋានកូដផ្ទាល់ខ្លួនរបស់អ្នក? Xygeni's SAST ស្កេនទង់ជាតិហានិភ័យ XSS ដែលបានរក្សាទុក ឆ្លុះបញ្ចាំង និងផ្អែកលើ DOM ដោយស្វ័យប្រវត្តិ មុនពេលពួកវាឈានដល់ pull request.
តើធ្វើដូចម្តេច SAST ឧបករណ៍បញ្ឈប់ XSS នៅក្នុងផ្លូវរបស់វា
ការធ្វើតេស្តសុវត្ថិភាពកម្មវិធីឋិតិវន្ត (SAST) ឧបករណ៍មានតម្លៃមិនអាចកាត់ថ្លៃបានក្នុងការកំណត់អត្តសញ្ញាណភាពងាយរងគ្រោះ XSS នៅដើមដំបូងនៃវដ្តជីវិតអភិវឌ្ឍន៍កម្មវិធី (SDLC).
អត្ថប្រយោជន៍គន្លឹះ
បញ្ហាចាប់បាននៅដើមដំបូងនៃការអភិវឌ្ឍន៍
SAST ឧបករណ៍ស្កេនកូដប្រភពសម្រាប់លំនាំងាយរងគ្រោះ មុនពេលកម្មវិធីត្រូវបានដាក់ពង្រាយ។
ឧទាហរណ៍នៃភាពងាយរងគ្រោះដែលបានដាក់ទង់៖
document.getElementById("output").innerHTML = userInput; // Vulnerable
ជម្រើសសុវត្ថិភាព៖
document.getElementById("output").textContent = sanitize(userInput); // Secure
វិភាគមូលដ្ឋានកូដទាំងមូល
សម័យទំនើប SAST ឧបករណ៍មិនត្រឹមតែវិភាគកូដផ្ទាល់ខ្លួនប៉ុណ្ណោះទេ; ពួកគេក៏ស្កេនភាពអាស្រ័យ និងបណ្ណាល័យភាគីទីបីផងដែរ ដោយរកឃើញហានិភ័យដែលលាក់ទុក។
រួមបញ្ចូលដោយរលូនជាមួយ CI/CD
SAST ឧបករណ៍ស្កេនដោយស្វ័យប្រវត្តិសម្រាប់ចំណុចខ្សោយ XSS ក្នុង pull requests និងបញ្ឈប់ការបញ្ចូលកូដដែលមិនមានសុវត្ថិភាព។
ផ្តោតលើអ្វីដែលសំខាន់បំផុត
SAST ឧបករណ៍ទាំងនេះផ្តល់អាទិភាពដល់ការជួសជុលដោយវាយតម្លៃពីលទ្ធភាពកេងប្រវ័ញ្ច និងភាពធ្ងន់ធ្ងរនៃភាពងាយរងគ្រោះ ដែលអនុញ្ញាតឱ្យក្រុមដោះស្រាយបញ្ហាសំខាន់ៗបំផុតជាមុនសិន។
របៀបដែល Xygeni ជួយអ្នកឈ្នះសមរភូមិប្រឆាំងនឹង XSS
Xygeni រួមបញ្ចូលគ្នានូវការវិភាគឋិតិវន្ត ការដោះស្រាយដែលដំណើរការដោយ AI និងភាពមើលឃើញខ្សែសង្វាក់ផ្គត់ផ្គង់ ដើម្បីបិទគម្លាតរវាងការស្វែងរកភាពងាយរងគ្រោះ XSS និងការជួសជុលវា។ ខាងក្រោមនេះជារបៀប៖
- Code Security (SAST): ស្កេនកូដភាគីទីមួយសម្រាប់ XSS និងចំណុចខ្វះខាតចាក់ផ្សេងទៀតដូចដែលវាត្រូវបានសរសេរ ដោយចាប់វាមុនពេលដាក់ពង្រាយ។ នៅលើ OWASP Benchmark, Xygeni-SAST ទទួលបានអត្រាវិជ្ជមានពិត 100% លើការរកឃើញ XSS ជាមួយនឹងវិជ្ជមានមិនពិតតិចតួចបំផុត។
- ការជួសជុលដោយស្វ័យប្រវត្តិ AI៖ ជួសជុលភាពងាយរងគ្រោះ XSS ដែលបានសម្គាល់ភ្លាមៗជាមួយនឹងការជួសជុលដែលត្រៀមរួចជាស្រេចសម្រាប់អ្នកអភិវឌ្ឍន៍ ដោយបង្កើត pull request ជាមួយនឹងជម្រើសដែលមានសុវត្ថិភាពដែលត្រូវគ្នាទៅនឹងមូលដ្ឋានកូដរបស់អ្នក មិនចាំបាច់មានការបំណះដោយដៃទេ។
- ការការពារមេរោគ៖ ត្រួតពិនិត្យការពឹងផ្អែក និងបណ្ណាល័យភាគីទីបីសម្រាប់កូដដែលបានចាក់ចូល ឬកូដដែលសម្របសម្រួល ដូច្នេះលំនាំងាយរងគ្រោះដែលលាក់ខ្លួននៅក្នុងកញ្ចប់ប្រភពបើកចំហមិនរអិលចេញពីការពិនិត្យកូដភាគីទីមួយរបស់អ្នកទេ។
- អាយឌីអ៊ី និង CI/CD សមាហរណកម្ម៖ សម្គាល់បញ្ហាដោយផ្ទាល់នៅក្នុង IDE នៅពេលដែលកូដត្រូវបានសរសេរ និងដាក់ចំណារពន្យល់ pull requests ដោយស្វ័យប្រវត្តិនៅទូទាំង GitHub, GitLab, Bitbucket, Azure DevOps និង Jenkins ដូច្នេះកូដដែលងាយរងគ្រោះមិនត្រូវបានបញ្ចូលគ្នាតាំងពីដំបូងឡើយ។
បង្កើតកម្មវិធីដែលអាចធន់បាន៖ គន្លឹះដើម្បីទប់ស្កាត់ការសរសេរស្គ្រីបឆ្លងគេហទំព័រ
ដើម្បីធានាសុវត្ថិភាពកម្មវិធីរបស់អ្នកបន្ថែមទៀត សូមអនុវត្តការអនុវត្តទាំងនេះរួមជាមួយ SAST ឧបករណ៍៖
- សម្អាតការបញ្ចូលរបស់អ្នកប្រើប្រាស់៖ ប្រើបណ្ណាល័យដូចជា DOMPurify សម្រាប់ការសម្អាតដ៏រឹងមាំ។
- លទ្ធផលអ៊ិនកូដ៖ ត្រូវអ៊ិនកូដទិន្នន័យថាមវន្តជានិច្ច មុនពេលបង្ហាញវានៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត។
- អនុវត្តគោលការណ៍សុវត្ថិភាពខ្លឹមសារ (CSPs)៖ ដាក់កម្រិតការប្រតិបត្តិស្គ្រីបចំពោះប្រភពដែលទុកចិត្ត។
- ធ្វើឱ្យការត្រួតពិនិត្យកូដបន្ត មិនមែនតាមកាលកំណត់ទេ៖ ជំនួសឲ្យការកំណត់ពេលវេលាពិនិត្យដោយដៃ សូមដំណើរការ Xygeni's SAST ស្កេនជា pre-commit ទំពក់ ឬដោយផ្ទាល់នៅក្នុងរបស់អ្នក CI/CD pipeline (GitHub, GitLab, Bitbucket, Azure DevOps, Jenkins) ដូច្នេះរាល់ commit ត្រូវបានធីកដោយស្វ័យប្រវត្តិ ហើយលេខកូដដែលមិនមានសុវត្ថិភាពមិនដែលឈានដល់ការបញ្ចូលគ្នាទេ។
ត្រៀមខ្លួនរួចរាល់ហើយឬនៅ ដើម្បីការពារកម្មវិធីរបស់អ្នកពី XSS?
ចំណុចខ្សោយ XSS មិនចាំបាច់គំរាមកំហែងដល់សុវត្ថិភាពកម្មវិធីរបស់អ្នកទេ។ ការយល់ដឹងពីរបៀបដែលពួកវាដំណើរការ ការចាប់ពួកវាជាមួយ SAST ឧបករណ៍ និងការអនុវត្តតាមការអនុវត្តការសរសេរកូដដែលមានសុវត្ថិភាពអាចកាត់បន្ថយការប៉ះពាល់របស់អ្នកឱ្យស្ទើរតែសូន្យ មុនពេលអ្នកវាយប្រហាររកឃើញចន្លោះប្រហោង។
At ស៊ីហ្គេនីយើងខ្ញុំត្រូវបានបង្កើតឡើងដើម្បីចាប់យកចំណុចខ្សោយទាំងនេះតាំងពីដំបូង ផ្តល់អាទិភាពដល់ចំណុចដែលពិតជាសំខាន់ និងរក្សាវាឱ្យឆ្ងាយពីអ្នក pipelineស ទាំងស្រុង។
កក់ការបង្ហាញឬចាប់ផ្តើមស្កេនលេខកូដរបស់អ្នកដោយឥតគិតថ្លៃនៅថ្ងៃនេះ។
សំណួរដែលត្រូវបានសួរជាញឹកញាប់
តើភាពងាយរងគ្រោះ XSS ជាអ្វី?
XSS (Cross-Site Scripting) គឺជាចំណុចខ្សោយមួយដែលអនុញ្ញាតឱ្យអ្នកវាយប្រហារចាក់ស្គ្រីបព្យាបាទចូលទៅក្នុងគេហទំព័រ ដែលបន្ទាប់មកដំណើរការនៅក្នុងកម្មវិធីរុករករបស់អ្នកប្រើប្រាស់ផ្សេងទៀត ដូចជាវាជាផ្នែកមួយនៃគេហទំព័រស្របច្បាប់។
តើ XSS ប្រភេទសំខាន់ៗទាំងបីមានអ្វីខ្លះ?
XSS ដែលបានរក្សាទុក (ស្គ្រីបត្រូវបានរក្សាទុកនៅលើម៉ាស៊ីនមេ ហើយដំណើរការសម្រាប់អ្នកទស្សនាម្នាក់ៗ) XSS ដែលបានឆ្លុះបញ្ចាំង (ស្គ្រីបត្រូវបានបង្កប់នៅក្នុងតំណភ្ជាប់ ហើយដំណើរការតែនៅពេលដែលតំណភ្ជាប់នោះត្រូវបានចុចប៉ុណ្ណោះ) និង XSS ដែលមានមូលដ្ឋានលើ DOM (ស្គ្រីបដំណើរការទាំងស្រុងនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតតាមរយៈ JavaScript ផ្នែកម៉ាស៊ីនភ្ញៀវដែលមិនមានសុវត្ថិភាព ដោយមិនពាក់ព័ន្ធនឹងម៉ាស៊ីនមេទាល់តែសោះ)។
អាចធ្វើបាន SAST ឧបករណ៍ចាប់យក XSS ដែលមានមូលដ្ឋានលើ DOM?
បាទ ទំនើប SAST ឧបករណ៍ស្កេន JavaScript ផ្នែកម៉ាស៊ីនភ្ញៀវសម្រាប់លំនាំមិនមានសុវត្ថិភាពដូចគ្នា (ដូចជាការបញ្ចូលដែលមិនបានសម្អាតដែលសរសេរដោយផ្ទាល់ទៅក្នុង DOM) ដែលបង្កឱ្យមាន XSS ដែលមានមូលដ្ឋានលើ DOM មិនមែនគ្រាន់តែកូដផ្នែកម៉ាស៊ីនបម្រើនោះទេ។
តើ XSS នៅតែជាចំណុចខ្សោយទូទៅមែនទេ?
មែនហើយ។ XSS នៅតែជាធាតុចូលដ៏អចិន្ត្រៃយ៍មួយនៅក្នុង OWASP Top 10 ដែលភាគច្រើនដោយសារតែវាត្រូវការតែវាលបញ្ចូលមួយដែលមើលរំលង ដើម្បីបង្ហាញអ្នកប្រើប្រាស់កម្មវិធីទាំងមូល។
តើក SAST ឧបករណ៍ខុសពី Web Application Firewall (WAF) សម្រាប់ការការពារ XSS?
A SAST ឧបករណ៍នេះរកឃើញលំនាំងាយរងគ្រោះនៅក្នុងកូដប្រភពរបស់អ្នកមុនពេលដាក់ពង្រាយ ដូច្នេះកំហុសមិនដែលបញ្ជូនមកទេ។ WAF ស្ថិតនៅពីមុខកម្មវិធីដែលកំពុងដំណើរការរួចហើយ ហើយព្យាយាមរារាំងសំណើដែលមានគំនិតអាក្រក់នៅពេលដំណើរការ វាជាសំណាញ់សុវត្ថិភាព មិនមែនជាការជួសជុលសម្រាប់កូដមូលដ្ឋាននោះទេ។







