තනි කාර්යයක්, පුළුල් ප්රහාරක මතුපිටක්
මෙය සිතන්න: ඔබ පරිශීලක ලියාපදිංචි කිරීම් සකසන ක්ෂුද්ර සේවාවක් ගොඩනඟමින් සිටී. වැඩ ප්රවාහයේ කොතැනක හෝ, ඔබ භාවිතා කරමින් විද්යුත් තැපැල් ලිපිනයක් කපා දමයි SQL හි substring_index ඩොමේන් එක ගන්න. ඒක පිළිවෙලයි, කෙටියි, ඒ වගේම වේදිකාගත කිරීමේදී හොඳින් ක්රියා කරනවා. ඉන්පසුව, නිෂ්පාදනයේදී, ලොග් සරල පෙළෙහි සම්පූර්ණ නම් සහ විද්යුත් තැපැල් වසම් වලින් පිරවීමට පටන් ගනී, එය හානිකර නොවන පෙනුමක් ඇති SQL ඇමතුමකින් අහම්බෙන් කාන්දු වීමකි.
ඒකයි ගැටලුව: SQL උප තන්තු_දර්ශකය SQL හි වැරදි ස්ථානයක භාවිතා කරන තෙක් ආරක්ෂිතව පෙනෙන නූල් ශ්රිත වලින් එකකි. බහු-කුලී නිවැසියන් SaaS යෙදුම් හෝ සංවේදී දත්ත හසුරුවන පද්ධතිවල, අනිසි භාවිතය පුද්ගලික වාර්තා හෙළිදරව් කිරීමට හෝ පැහැදිලි ඇඟවීම් අවුලුවාලීමකින් තොරව වරප්රසාද වැඩි කිරීමට පවා ඉඩ දිය හැකිය. තීරණාත්මක පරිසරවල, විශේෂයෙන් බහු-කුලී නිවැසියන් වේදිකාවල තනි විමසුමක් බහු පාරිභෝගිකයින්ට සේවය කළ හැකි විට, කුඩා පරිසීමක තර්ක දෝෂයක් SQL හි substring_index හුදකලා දත්ත කට්ටල අතර තොරතුරු කාන්දු වීම, හරස් කුලී නිවැසියන්ගේ දත්ත නිරාවරණයට හේතු විය හැක.
තාත්වික කේතයෙන් SUBSTRING_INDEX තේරුම් ගැනීම
MySQL සහ MariaDB වලදී, SQL substring_index සඳහා තර්ක තුනක් භාවිතා කරයි: සැකසීමට ඇති තන්තුව, පරිසීමකය සහ ගණන් කිරීම. එය එම පරිසීමකයට පෙර හෝ පසුව තන්තුවේ කොටසක් ආපසු ලබා දෙයි.
තනි ක්ෂේත්රයක ගබඩා කර ඇති ව්යුහගත අගයන් ඉක්මනින් බෙදීමට යෙදුම් විමසුම් වලදී එය බහුලව භාවිතා වේ, උදාහරණයක් ලෙස, විද්යුත් තැපෑලක් පරිශීලක නාමයකට සහ වසමකට කැඩීම, URL එකකින් උප වසමක් උපුටා ගැනීම හෝ සංයුක්ත යතුරකින් උපසර්ගයක් හුදකලා කිරීම. සංවර්ධකයින් බොහෝ විට SQL හි යෙදුම්-පැති විග්රහයට වඩා substring_index තෝරා ගන්නේ එය අවාසිදායක බැවිනි.cise, දත්ත සමුදායෙන් පිටත අමතර සැකසුම් වළක්වන අතර, පෙරහන්, සම්බන්ධ කිරීම් සහ කණ්ඩායම් කිරීමේ මෙහෙයුම් වලදී කෙලින්ම භාවිතා කළ හැක.
උදාහරණයක්: විද්යුත් තැපෑලෙන් පරිශීලක නාමය සහ වසම උපුටා ගැනීම
sql SELECT SUBSTRING_INDEX(email, '@', 1) AS username, SUBSTRING_INDEX(email, '@', -1) AS domainපරිශීලකයින්ගෙන්;
SQL හි substring_index සඳහා පොදු භාවිත අවස්ථා අතරට:
- පිළිගැනීමේ පණිවිඩ සඳහා පරිශීලක නාම උපුටා ගැනීම
- ඉඩ දෙන්න/ප්රතික්ෂේප කරන්න ලැයිස්තු වලට එරෙහිව විද්යුත් තැපැල් වසම් වලංගු කිරීම
- විශ්ලේෂණ විමසුම් වලදී වසම අනුව පරිශීලකයින් කාණ්ඩගත කිරීම
නිසා SQL හි උප-නූල්_දර්ශකය කොන්cise සහ වේගවත්, සංවර්ධකයින් බොහෝ විට එය පෙරහන් කිරීම, වලංගුකරණය හෝ වාර්තා කිරීම සඳහා SQL හි නූල් ශ්රිතවල සෘජුවම භාවිතා කරයි. ගැටළුව ආරම්භ වන්නේ පරිසීමක හෝ ගණන් ගතික වන අතර පරිශීලක ආදානයෙන් පැමිණෙන විටය.
ආරක්ෂාව බිඳ වැටෙන තැන - SQL හි Substring_index
ප්රධාන අවදානම් රටා තුනක් හැරීම SQL හි substring_index වගකීමක් බවට, විශේෂයෙන් බහු-කුලී නිවැසියන් හෝ ඉහළ කොටස් සහිත පද්ධතිවල:
අධික දත්ත නිරාවරණය
බෙදාගත් දත්ත සමුදායක, තනි off-by-one දෝෂයක් හෝ වැරදි පරිසීමක ගණනකින් අනෙකුත් කුලී නිවැසියන්ගෙන් හෝ සම්බන්ධයක් නැති පරිශීලකයින්ගෙන් සංවේදී තොරතුරු කාන්දු විය හැක.
sql -- Intended: first name only SELECT SUBSTRING_INDEX(full_name, ' ', 1); -- Bug: leaks full name and extra fields SELECT SUBSTRING_INDEX(full_name, ' ', 3); බහු-කුලී නිවැසියන්ගේ CRM එකක, මෙය කුලී නිවැසියෙකුගේ අපනයනය කරන ලද CSV හි අනෙකුත් සමාගම්වල සම්පූර්ණ පාරිභෝගික නම් හෙළි කළ හැකිය.
ශුන්ය හෝ විකෘති ආදානය
පරිසීමකය අස්ථානගත වී ඇත්නම් හෝ ආදානය ශුන්ය නම්, SQL හි උප-නූල්_දර්ශකය සම්පූර්ණ ක්ෂේත්රයම ආපසු ලබා දිය හැක. තීරණාත්මක පද්ධති වලදී, මෙය අභ්යන්තර හැඳුනුම්පත්, සංයුක්ත මෙටාඩේටා හෝ බාහිර දෘශ්යතාව සඳහා අදහස් නොකරන නිදොස් කිරීමේ අගයන් නිරාවරණය කළ හැකිය.
සම්බන්ධවීම් හෝ උප විමසුම් වල අනවසර ප්රවේශය
බහු-කුලී නිවැසියන් සැකසුම් වලදී, කුලී නිවැසියන්ගේ විෂය පථය සඳහා SQL හි නූල් ශ්රිත නොසැලකිලිමත් ලෙස භාවිතා කිරීම හුදකලාව බිඳ දැමිය හැකිය:
SELECT o.id, o.amount, t.name FROM orders o JOIN tenants t ON SUBSTRING_INDEX(o.customer_ref, '-', 1) = t.tenant_code; If පාරිභෝගික_යොමුව නොගැලපෙන ලෙස ආකෘතිගත කර ඇති හෝ පරිශීලක පාලනය යටතේ ඇති, කුලී නිවැසියා A හට කුලී නිවැසියා B ගේ ඇණවුම් ලබා ගත හැකිය. ගෙවීම් පද්ධති හෝ සෞඛ්ය සේවා වේදිකාවල, මෙය දත්ත වෙන් කිරීමේ ප්රතිපත්ති සෘජුවම උල්ලංඝනය කිරීමක් බවට පත්වේ.
බහු-කුලී නිවැසියන් අවදානම් උදාහරණය: SaaS ඉන්වොයිසිං වේදිකාවක් ගැන සිතන්න, එහිදී පාරිභෝගික_යොමුව ඉරකට පෙර කුලී නිවැසියන්ගේ හැඳුනුම්පත සංකේතනය කරයි (කුලී නිවැසියාගේ නියෝගය). අනිෂ්ට පරිශීලකයෙකු වෙනත් කුලී නිවැසියෙකුගේ හැඳුනුම්පතක් සහිත නමුත් වලංගු ඇණවුම් අංකයක් සහිත ඇණවුම් යොමුවක් ඉදිරිපත් කරන්නේ නම්, සහ සම්බන්ධ වීම භාවිතා කරන්නේ නම් SQL හි substring_index වලංගුකරණයකින් තොරව, ඔවුන්ට සම්පූර්ණයෙන්ම වෙනස් සංවිධානයකට අයත් ඉන්වොයිස් දත්ත වෙත ප්රවේශ විය හැකිය.
සැබෑ ප්රහාරක දෛශික CI/CD සහ විවෘත මූලාශ්ර කේතය
අනිසි ලෙස භාවිතා කිරීම SQL උප තන්තු_දර්ශකය කනිෂ්ඨ-සංවර්ධක වැරැද්දක් පමණක් නොවේ; එය පහත පරිදි දිස්වේ:
- ගතික පරිසීමක සහිත ORM විමසුම්
- විවෘත මූලාශ්ර ප්ලගීන වල ගබඩා කළ ක්රියා පටිපාටි
- ඉල්ලීම් පරාමිතීන් කෙලින්ම සම්බන්ධ කරන Inline SQL
අනාරක්ෂිත කේතය නිෂ්පාදනයට ළඟා වන ආකාරය:
Developer writes query using substring_index in sql ↓ Code is committed and pushed to the repository ↓ Automated build runs (no SQL security checks) ↓ Code review focuses on business logic, not string functions in SQL ↓ Changes are merged into the main branch ↓ Application is deployed to production SQL හි අනාරක්ෂිත තන්තු ශ්රිත සඳහා ස්වයංක්රීය පරීක්ෂාවන් නොමැතිව, මෙම අවදානම් සමාලෝචනය නොසලකා හැර නිෂ්පාදනයට ගෙන යා හැකි අතර, පළමු දිනයේ සිටම සංවේදී දත්ත කාන්දු විය හැකිය.
හඳුනාගැනීම SAST/සීඅයි-සීඩී
අවදානම් සහගත තත්වයන් හැසිරවීමට ආරක්ෂිතම ක්රමය SQL හි substring_index රටා වල ඇති ප්රධාන වාසිය නම් ඒකාබද්ධ කිරීමට පෙර ඒවා අවහිර කිරීමයි.
හඳුනාගැනීමේ නීති රීති වලට ඇතුළත් විය යුත්තේ:
- භාවිතය සඳහා SQL උප තන්තු_දර්ශකය ඉල්ලීම් පරාමිතීන්ගෙන් පරිසීමක හෝ ගණන් කිරීම් සමඟ
- සීමා නිර්ණ වලංගුකරණය අස්ථානගත වී ඇත
අවම රීතියකට උදාහරණයක්:
yaml rules: - id: mysql-substring-index-dynamic-delimiter languages: [sql] message: Avoid SUBSTRING_INDEX with dynamic delimiter or count. severity: error Pipeline පියවර:
yaml - name: SAST – SQL rules run: semgrep --config semgrep-sql.yml --error PR පරීක්ෂාවන් අතරතුර SQL හි අනාරක්ෂිත තන්තු ශ්රිත සඳහා ස්කෑන් කිරීමෙන්, ඔබ කේත සමාලෝචනයෙන් අනුමාන කටයුතු ඉවත් කරයි.
සංවර්ධකයින් සඳහා අවම කිරීමේ උපාය මාර්ග
අවදානම් සහිත භාවිතය අල්ලා ගැනීම SQL උප තන්තු_දර්ශකය සමාලෝචන හෝ ස්කෑන් වලදී හොඳයි, නමුත් සැබෑ ජයග්රහණය නම් එය මුලින්ම හඳුන්වා නොදීමයි. බොහෝ ආරක්ෂක සිදුවීම් සිදුවන්නේ සංවර්ධකයින් අන්ත අවස්ථා සලකා නොබලා හුරුපුරුදු කෙටිමං මත විශ්වාසය තබන බැවිනි.
සමඟ වැඩ කිරීමේදී කරදර වළක්වා ගන්නේ කෙසේද යන්න මෙන්න SQL හි substring_index හෝ SQL හි සමාන නූල් ශ්රිත:
ක්රියාත්මක කිරීමට පෙර පරිසීමක ස්ථාන වලංගු කරන්න
සීමා නිර්ණය පවතින බවත් එය නිවැරදි ස්ථානයේ ඇති බවත් උපකල්පනය නොකරන්න. බහු-කුලී නිවැසි පද්ධතිවල, හඳුනාගැනීමක ඇති එක් අනපේක්ෂිත පරිසීමකයක් මඟින් තවත් කුලී නිවැසියෙකුගේ දත්ත වෙත ප්රවේශය විවෘත කළ හැකිය.
sql SELECT CASE WHEN LOCATE('@', email) > 0 THEN SUBSTRING_INDEX(email, '@', 1) ELSE NULL END AS username FROM users; - අපේක්ෂිත ප්රතිදාන දිග පරීක්ෂා කරන්න
ආරක්ෂිත සීමාවන් සකසන්න. උප තන්තු ප්රතිඵලය ඉතා කෙටි හෝ දිගු නම්, එය අවලංගු ලෙස සලකන්න. - භාවිතයට පෙර දත්ත විෂබීජහරණය කර සංකේතනය කරන්න
SQL වෙත ළඟා වීමට පෙර පරිශීලකයා විසින් සපයන ලද ආදානයෙන් ව්යාජ පරිසීමක ඉවත් කරන්න. - වළකින්න SQL හි substring_index ආරක්ෂක-තීරණාත්මක තර්කනය තුළ
අවසර පරීක්ෂාවන්, කුලී නිවැසියන් හුදකලා කිරීම හෝ සංවේදී දත්ත වෙත ප්රවේශය පාලනය කරන ඕනෑම දෙයක් සඳහා එය කිසි විටෙකත් භාවිතා නොකරන්න. විග්රහ කිරීම ආරක්ෂක සීමාවක් නොවේ. - විග්රහ කිරීම යෙදුම් ස්ථරයට ගෙන යන්න. යෙදුම්-පාර්ශ්වික තර්කනය මඟින් වලංගුකරණය, දෝෂ හැසිරවීම සහ ඒකක පරීක්ෂණ පිළිබඳ වඩා හොඳ පාලනයක් ඔබට ලබා දේ.
python def safe_split_email(email): if '@' not in email: raise ValueError("Invalid email") username, domain = email.split('@', 1) if '.' not in domain: raise ValueError("Invalid domain") return username, domain SQL හි තන්තු ශ්රිත විශ්වාස නොකළ කේත මාර්ග ලෙස සැලකීමෙන්, ඔබ ඕනෑම තාර්කික වැරැද්දක පිපිරුම් අරය අඩු කරයි.
ආරක්ෂක මෙවලම් සමඟ ඒකාබද්ධ වීම
දක්ෂ කණ්ඩායම්වලට පවා අතින් සමාලෝචන මත පමණක් විශ්වාසය තැබිය නොහැක; අනාරක්ෂිත වැනි අවදානම් රටා SQL උප තන්තු_දර්ශකය විශේෂයෙන් විශාල කේත පදනම් වල හෝ තෙවන පාර්ශවීය කේත සමඟ කටයුතු කරන විට භාවිතය ලිස්සා යා හැක.
Xygeni වැනි මෙවලම් ඒකාබද්ධ කරන්නේ ඇයි:
- විවෘත මූලාශ්ර සහ හිමිකාර කේත දෙකම ආවරණය කරයි: විකුණුම්කරුවන්ගේ පැකේජවල හෝ උරුම මොඩියුලවල අවදානම් සැඟවී නොමැති බව සහතික කිරීම.
- SQL ස්ක්රිප්ට් සහ යෙදුම් කේතයේ අනාරක්ෂිත රටා හඳුනා ගනී.: සොයා ගැනීම SQL හි substring_index Python, Java, හෝ Node.js ඇතුළත නූල් තුළට ඇතුළත් කර ඇති විට පවා වැරදි ලෙස භාවිතා කිරීම.
- සෘජුවම ඒකාබද්ධ වේ CI/CD pipelines: අනාරක්ෂිත නම් ගොඩනැගීම් ස්වයංක්රීයව අසාර්ථක වේ SQL හි නූල් ශ්රිත අනාවරණය වේ.
- ක්රියාකාරී ප්රතිකර්ම උපදෙස් සපයයි: විමසුමේ කුමන කොටස අවදානම්ද, ඇයි සහ එය නිවැරදි කරන්නේ කෙසේද යන්න සංවර්ධකයින්ට හරියටම පෙන්වයි.
Xygeni සමඟ වැඩ ප්රවාහ උදාහරණය CI/CD ආරක්ෂක:
Source → Commit → Build → SQL Scan (Xygeni) → Fail build if violations found → Remediation & re-scan → Merge & Deploy අඛණ්ඩ ස්කෑන් කිරීම යෙදවීමට පෙර තීරණාත්මකයි, එය අවදානම් සහිත භාවිතයන් සහතික කරයි sql උපනූල්_දර්ශකය මූලික සංවර්ධනයේදී පමණක් නොව පසුකාලීන යාවත්කාලීන කිරීම්, ප්රතිසංස්කරණ සහ යැපුම් වෙනස්කම් වලදීද හසු වේ. මෙම ක්රියාශීලී ප්රවේශය යන්නෙන් අදහස් වන්නේ ඒවා නිෂ්පාදනයට ළඟා වීමට පෙර අවදානම් ඉවත් කරනු ලබන බවයි.
සංවර්ධකයින් සඳහා අවසාන පියවර - SQL හි substring_index ගැන
මෙහි මූලික කරුණ නම්:
- SQL උප තන්තු_දර්ශකය නෛසර්ගිකවම නරක නැත, නමුත් නරක භාවිතය එය නිහඬ දත්ත කාන්දුවක් බවට පත් කරයි.
- සෑම SQL හි substring_index ආරක්ෂක සංවේදී මාර්ගයකින් කරන ඇමතුමක් ආරක්ෂිත බව ඔප්පු වන තුරු සැක සහිත ලෙස සැලකිය යුතුය.
- දත්ත සීමාවන් හෝ අවසරයන් වැදගත් වන සන්දර්භයන් තුළ SQL හි සියලුම තන්තු ශ්රිත භයානක විය හැකිය; ඒවා සරල හෝ හානිකර නොවන බව පෙනුනත්, සංවේදී පරිසරයන් තුළ ඒවා සැමවිටම අනතුරුදායක විය හැකි ලෙස සලකන්න.
සංවර්ධන කණ්ඩායම් සඳහා ක්රියාකාරී ඊළඟ පියවර:
- ඔබේ කේත පදනම විගණනය කරන්න ඕනෑම භාවිතයක් සඳහා SQL උප තන්තු_දර්ශකය සම්බන්ධවීම්, උප විමසුම් හෝ ප්රවේශ පාලන තර්කනය තුළ.
- එක් කරන්න SAST නීති ගතික පරිසීමක සහ වලංගු නොකළ ආදානය හඳුනා ගැනීමට SQL හි නූල් ශ්රිත.
- යෙදුම් ස්ථරයට විග්රහය මාරු කරන්න හැකි සෑම තැනකම.
- අඛණ්ඩ ස්කෑන් ධාවනය කරන්න යෙදවීමට පෙර අනාරක්ෂිත භාවිතය අල්ලා ගැනීමට Xygeni වැනි මෙවලම් සමඟ.
ආරක්ෂාව යනු සිදුවීමෙන් පසු සිදුරු සවි කිරීම පමණක් නොවේ; එය වැඩ ප්රවාහයට පිළිස්සීම් වැළැක්වීම ගැන ය. ඔබ සලකන්නේ නම් SQL උප තන්තු_දර්ශකය සහ SQL හි අනෙකුත් නූල් ශ්රිත අමු පරිශීලක ආදානය මෙන් ප්රවේශමෙන් භාවිතා කිරීමෙන්, ඔබේ විමසුමේ ඇති පහසු සහායකයෙකු වඩාත්ම භයානක රේඛාව බවට පත් කිරීමෙන් ඔබට වැළකී සිටිය හැකිය.






