ඔබ භාවිතා කරන්නේ නම් ස්ට්රිප්චාර් පරිශීලක ආදානය පිරිසිදු කිරීමට, ඔබ තනිවම නොවේ. බොහෝ සංවර්ධකයින් මේ ආකාරයේ ආදාන සනීපාරක්ෂාව එන්නත් කිරීමේ උත්සාහයන් අවහිර කිරීමට. මුලින්ම බැලූ බැල්මට, එය තාර්කික බව පෙනේ, භයානක අක්ෂර ඉවත් කරන්න, සහ ගෙවීම් ප්රමාණය අතුරුදහන් වේ. කෙසේ වෙතත්, මෙම ප්රවේශය ව්යාජ ආරක්ෂාව පිළිබඳ හැඟීමක් ලබා දෙයි. ඇත්ත වශයෙන්ම, ප්රහාරකයින්ට සරල පෙරහන් මඟ හැරිය හැක ස්ට්රිප්චාර් භාවිතා අපැහැදිලි බර පැටවීම්, කේතන ක්රම, හෝ දක්ෂ සන්දර්භ මාරු කිරීම. ඒ නිසා බුද්ධිමත් සංවර්ධකයින් එතැනින් නතර නොවේ. ඒ වෙනුවට, ඔවුන් භාවිතා කරන්නේ පරාමිතිගත විමසුම්, එමඟින් මූලයේ එන්නත් ප්රහාර වළක්වයි.
මෙම සටහනෙන්, ඔබ ඉගෙන ගනු ඇත්තේ ඇයි කියා ස්ට්රිප්චාර් සැබෑ ලෝක අවස්ථා වලදී අසමත් වීම, ප්රහාරකයින් මෙම පෙරහන් අනිසි ලෙස භාවිතා කරන ආකාරය සහ සැබවින්ම ක්රියාත්මක වන ආරක්ෂිත විකල්ප මොනවාද. අපි කේත උදාහරණ හරහා ගමන් කරන්නෙමු, පොදු බයිපාස් ශිල්පීය ක්රම පෙන්වන්නෙමු, සහ කෙසේද යන්න පැහැදිලි කරන්නෙමු ආදාන සනීපාරක්ෂාව සෑම විටම වැනි ව්යුහාත්මක ආරක්ෂණ සමඟ යුගලනය කළ යුතුය පරාමිතිගත විමසුම්, නැත්නම් ඔබ අවදානමට ලක්විය හැකි වනු ඇත.
කුමක් ස්ට්රිප්චාර් ඇත්තටම කරනවා (සහ කරන්නේ නැහැ)
බොහෝ සංවර්ධකයින් භාවිතා කරන්නේ stripchar හෝ පරිශීලක ආදානයෙන් අනාරක්ෂිත අක්ෂර ඉවත් කිරීමට සමාන කාර්යයන්. සාමාන්යයෙන්, එය විරාම ලකුණු, විශේෂ සංකේත හෝ අක්ෂරාංක නොවන ඕනෑම දෙයක් ඉවත් කරයි. මුලදී, එය ආදාන සනීපාරක්ෂාව, නමුත් එය සැබෑ ආරක්ෂාවක් නොවේ.
අපි එය කොටස් වලට බෙදා ගනිමු. මේ වගේ ශ්රිතයක්:
වැනි අක්ෂර ඉවත් කරයි ', ", හෝ ;. ඉතින්, ඔබ ඇතුළත් කළහොත්:
එය බවට පත්වන්නේ:
පරිශීලක ආදානය පිරිසිදුව පෙනුනත්, ප්රහාරකයින්ට තර්කනය පමණක් භාවිතා කරමින් SQL ගෙවීම් එන්නත් කළ හැකිය, විශේෂයෙන් යෙදුම නූල් සංයෝජන හරහා විමසුම් ගොඩනඟන විට. SQL එන්නත් කිරීම සැබවින්ම වැළැක්වීම සඳහා, ඔබ පරාමිතිගත විමසුම් සහ සන්දර්භය-දැනුවත් ආදාන හැසිරවීම භාවිතා කළ යුතුය. අක්ෂර පෙරහන් වැනි stripchar() ප්රමාණවත් නොවේ.
ඇත්ත වශයෙන්ම, ඉවත් කරන ලද ආදානය බැලූ බැල්මට ආරක්ෂිත ලෙස පෙනෙනු ඇත. කෙසේ වෙතත්, මෙම ප්රවේශය ද්වේෂසහගත තර්කනය උදාසීන නොකරයි, එය එය ලියන ආකාරය පමණක් වෙනස් කරයි. ඇත්ත වශයෙන්ම, ප්රහාරකයින් බොහෝ විට මෙයින් ප්රයෝජන ගන්නේ ගෙවීම් කේතනය කිරීමෙන්, සුදු අවකාශය ඇතුළු කිරීමෙන් හෝ ඔබේ පෙරහන සම්පූර්ණයෙන්ම මඟ හැරීමට උපායමාර්ගිකව ඉවත් කළ අක්ෂර භාවිතා කිරීමෙනි.
අමතරව, ස්ට්රිප්චාර් තීරණාත්මක සන්දර්භයක් නොමැත. ආදානය දත්ත සමුදායක්, කවචයක් හෝ බ්රවුසරයක් සඳහා යොමු වී ඇත්දැයි එය නොදනී. එයින් අදහස් කරන්නේ එයට නිවැරදි ගැලවී යාම හෝ කේතනය යෙදිය නොහැකි බවයි. ගමනාන්තය නොදැන ආදානය සනීපාරක්ෂාව කිරීම යනු සැබෑ තර්ජනය තිබියදී HTML ගැලවී යාමක් වැනිය. SQLi.
අවසානයේ දී, ස්ට්රිප්චාර් කිසිවක් අර්ථකථනය කරන්නේ හෝ සුරක්ෂිත කරන්නේ නැත, එය හුදෙක් නූල් සංස්කරණය කරයි. සංස්කරණය කිරීම ආරක්ෂාව නොවේ. ඔබට සැබෑ ආරක්ෂාවක් අවශ්ය නම්, ව්යුහගත, වලංගු කළ සහ පරාමිතිගත විමසුම් භාවිතා කරන්න. සම්පූර්ණ නැවතුම.
වෙනස වඩාත් පැහැදිලි කිරීම සඳහා, stripchar පරාමිතිගත විමසුම් සමඟ පැත්තෙන් පැත්තෙන් සංසන්දනය කරන ආකාරය මෙන්න:
Stripchar vs Parameterized Queries: ඔබේ කේතය ඇත්තටම ආරක්ෂා කරන්නේ කුමක්ද?
| විශේෂාංගය | stripchar() | පරාමිතිගත විමසුම් |
|---|---|---|
| ආරක්ෂණ මට්ටම | මූලික නූල් පිරිසිදු කිරීම. කේතන හෝ තර්කන උපක්රම සමඟ පහසුවෙන් මඟ හැරිය හැක. | සියලු ආකාරයේ SQL එන්නත් වලට එරෙහිව ශක්තිමත් ආරක්ෂාවක්. |
| සන්දර්භය දැනුවත් කිරීම | සන්දර්භයට අන්ධයි (SQL, HTML, shell, ආදිය). සෑම තැනකම එකම රීතිය අදාළ වේ. | සම්පූර්ණයෙන්ම සන්දර්භය පිළිබඳ දැනුවත්. සෑම පරිසරයක් සඳහාම නිසි ගැලවීමක් භාවිතා කරයි. |
| සංවර්ධක උත්සාහය | ක්රියාත්මක කිරීමට ඉක්මන් නමුත් දිගුකාලීන භාවිතය සඳහා විශ්වාස කළ නොහැකි. | නිවැරදි ඒකාබද්ධතාවය අවශ්යයි, නමුත් ශක්තිමත් සහ අනාගතයට ඔරොත්තු දෙන. |
| බයිපාස් ප්රතිරෝධය | අඩු — ප්රහාරකයින් හිස් අවකාශය, කේතනය හෝ තර්කනය භාවිතයෙන් පහසුවෙන් අනුවර්තනය වේ. | ඉහළ — කේතය දත්ත වලින් වෙන් කර විශ්වාසදායක ලෙස එන්නත් කිරීම අවහිර කරයි. |
| ආරක්ෂක විශ්වාසය | වැරදි ආරක්ෂාව පිළිබඳ හැඟීමක් - ගැටලුව විසඳන්නේ නැතිව එය සැඟවිය හැක. | විශ්වාසදායක කර්මාන්තය standard ආරක්ෂිත විමසුම් ක්රියාත්මක කිරීම සඳහා. |
ප්රහාරකයින් ආදාන සනීපාරක්ෂාව මඟ හරින ආකාරය
සංවර්ධකයින් විශ්වාසය තබන විට සාමාන්ය අවදානමට ලක්විය හැකි ප්රවාහයක් පෙනෙන්නේ මෙයයි ස්ට්රිප්චාර් ආදාන සනීපාරක්ෂාව සඳහා:
ප්රහාරකයන්ට ඔබේ පෙරහන් බිඳ දැමීමට අවශ්ය නැත, ඔවුන්ට අවශ්ය වන්නේ ඔවුන් වටා යන්න. සංවර්ධකයින් විශ්වාසය තබන විට ස්ට්රිප්චාර් ආදාන සනීපාරක්ෂාව සඳහා, ඔවුන් බොහෝ විට උපකල්පනය කරන්නේ උපුටා දැක්වීම් හෝ අර්ධ කොමා වැනි අක්ෂර ඉවත් කිරීමෙන් එන්නත් කිරීමේ උත්සාහයන් අවහිර වන බවයි. කෙසේ වෙතත්, ප්රහාරකයින් ඉක්මනින් අනුවර්තනය වේ. ඔවුන් නිර්මාණය කරන්නේ අපැහැදිලි බර පැටවීම් විශේෂයෙන් එම පෙරහන් වල සන්දර්භය නොමැති විට, regex-පාදක පෙරහන් හරහා ලිස්සා යන ඒවා.
උදාහරණයක් ලෙස, ඔබ මේ ආකාරයට ආදානය පිරිසිදු කිරීමට උත්සාහ කරනවා යැයි සිතමු:
පරිශීලකයාට සම්භාව්යයක් ඉදිරිපත් කළ නොහැකි වුවද ' OR 1=1 --, ඔවුන්ට යුනිකෝඩ් උපක්රම, නූල් සංයුක්ත කිරීම හෝ තවමත් ක්රියාත්මක වන කැඩුණු වාක්ය ඛණ්ඩය භාවිතා කළ හැකිය. මෙවැනි ගෙවීම් බොහෝ විට ක්රියා කරයි:
හෝ:
ඔබේ ශ්රිතය වචන නොවන අක්ෂර ඉවත් කරන්නේ නම්, ඔබට අහම්බෙන් වලංගු SQL විධානයක් නැවත ගොඩනඟන ලදී.. නරකම දෙය නම්, ප්රහාරකයින්ට ඔබේ පෙරහන පසු කරන ආකාරයෙන් අගයන් සංකේතනය කළ හැකි නමුත් ඉලක්ක පද්ධතිය මඟින් විකේතනය කළ හැකිය.
SQL එන්නත් කිරීමට අමතරව, ස්ට්රිප්චාර් shell විධාන, ගොනු මාර්ග හෝ JavaScript ක්රියාත්මක කිරීම වැනි අනෙකුත් සන්දර්භයන්හිදී ද අසාර්ථක වේ. ආදානය භාවිතා කරන්නේ කොතැනද යන්න පිළිබඳව එයට කිසිදු අවබෝධයක් නොමැති බැවින්, එයට නිසි ගැලවීමක් හෝ වලංගුකරණයක් යෙදිය නොහැක.
ප්රතිඵලයක් වශයෙන්, ආදාන සනීපාරක්ෂාව සමග ස්ට්රිප්චාර් මඟ හැරීම පහසුය. සැබෑ ආරක්ෂාව ලැබෙන්නේ සන්දර්භය-දැනුවත් පාලනයන්, විශේෂයෙන්ම පරාමිතිගත විමසුම් තර්ක එන්නත් කිරීම සම්පූර්ණයෙන්ම වළක්වන.
ඔබ පරාමිතිගත විමසුම් භාවිතා කළ යුත්තේ ඇයි?
ඔබට එන්නත් ප්රහාර ඇත්තටම නැවැත්වීමට අවශ්ය නම්, ඔබට අවශ්ය වන්නේ නූල් සමඟ විමසුම් ගොඩනැගීම නවත්වන්න. එතන තමයි පරාමිතිගත විමසුම් ඇතුලට එන්න. Unlike ස්ට්රිප්චාර්, ඒවා පෙරහන් කරන්නේ නැහැ, ඒවා දත්ත වලින් කේතය වෙන් කරන්න එන්ජින් මට්ටමින්.
කැඩුණු විමසුම නැවත බලමු:
මෙය භයානකයි, මන්ද ආදානය කෙලින්ම SQL වෙත එන්නත් කරනු ලැබේ. අක්ෂර ඉවත් කිරීම සමඟ වුවද, ඔබ තවමත් වැරදි ලෙස භාවිතා කළ හැකි නූලක් ගොඩනඟමින් සිටී. ඒ වෙනුවට, මෙවැනි පරාමිතිගත විමසුමක් භාවිතා කරන්න:
මෙන්න, දත්ත සමුදා ධාවකය දන්නවා ඒක userInput දත්ත වේ, ක්රියාත්මක කළ නොහැකි කේතය. එය ස්වයංක්රීයව එයින් ගැලවී යන අතර ආදානයේ උපුටා දැක්වීම්, අර්ධ කොමා හෝ ෂඩ්-කේතනය කළ ගෙවීම් අඩංගු වුවද එන්නත් කිරීම අවහිර කරයි.
පයිතන් හි:
PDO සමඟ PHP හි:
මේ සියලු උදාහරණ හරහා, පරාමිතිගත විමසුම් කුමන චරිත භයානක විය හැකිදැයි අනුමාන නොකර එන්නත් කිරීම වළක්වන්න. ඔබට අවශ්ය නැත. ස්ට්රිප්චාර්, ඔබට ව්යුහගත, සන්දර්භ-දැනුවත් විමසුම් ගොඩනැගීමක් අවශ්ය වේ.
අතිරේකව, මෙම තාක්ෂණය මඟින් අපැහැදිලි ගෙවීම්, යුනිකෝඩ් උපක්රම සහ කේතීකරණ බයිපාස් අවහිර කරයි, එනම් XSS අවදානම්. Xygeni වැනි මෙවලම් මෙම තර්ජන කලින්ම හඳුනා ගනී. SAST විශ්ලේෂණය.
කෙටියෙන් කිවහොත්, සැබෑ ආරක්ෂක පෙරහන් මත රඳා නොපවතී. ඒවා ප්රොටෝකෝල, විශ්වාසදායක API සහ සම්පූර්ණ සන්දර්භය මත රඳා පවතී. ඔබ රාමු හෝ ගතික සේවා එන්නත් භාවිතා කරන්නේ නම්, ඔබේ කේත පදනම හරහා ආදාන ප්රචාරණය වන ආකාරය පිළිබඳව දැනුවත් වන්න. ආරක්ෂිත යැපුම් එන්නත් කිරීම සංකීර්ණ ප්රවාහයන් පවා නව ප්රහාරක පෘෂ්ඨයන් විවෘත නොකරන බව සහතික කරයි.
විශ්වාසය තියන්න එපා ස්ට්රිප්චාර්. සැබෑ ආරක්ෂක ක්රියාත්මක කිරීමට Xygeni භාවිතා කරන්න.
ඔබ භාවිතා කළත් පරාමිතිගත විමසුම්, ඔබේ මුළු කේත පදනමම එකම දේ අනුගමනය කරන බවට කිසිදු සහතිකයක් නොමැත. standard. උරුම තර්කනය, තෙවන පාර්ශවීය ස්ක්රිප්ට් හෝ PR එකක නොසලකා හරින ලද රේඛා තවමත් එන්නත් කිරීමේ අවදානම් හඳුන්වා දිය හැකිය. Xygeni උදව් කරන්නේ එතැනදීය.
Xygeni ඔබේ මූලාශ්ර කේතය පරිලෝකනය කරයි, pull requests, සහ සීඅයි pipelineඅල්ලා ගැනීමට:
- සංයුක්ත කිරීම සමඟ SQL ගොඩනඟන විමසුම් නූල්
- දුර්වල හෝ ස්වදේශීය පෙරහන් වැනි ස්ට්රිප්චාර්
- දන්නා අපැහැදිලි ගෙවීම් සමඟ ගැළපෙන සැක සහිත තර්කනය
ඔබට සෑම පේළියක්ම පීරීමට අවශ්ය නැත. Xygeni අනාරක්ෂිත රටා කලින් සලකුණු කරයි, අදාළ වේ. ස්වයංක්රීය නිවැරදි කිරීම හැකි සෑම විටම, සහ අභිරුචිකරණය කළ හැකි අවදානම් ඒකාබද්ධ කිරීම් අවහිර කළ හැකිය Guardrails.
කෙටියෙන්, පරාමිතිගත විමසුම් හොඳම භාවිතයක් පමණක් නොව, ඒවා පරිමාණයෙන් බලාත්මක කරන බවට Xygeni සහතික කරයි. තවත් අනුමාන කිරීම් නැහැ. මග හැරුණු පෙරහන් නැහැ. සැබෑ ආරක්ෂාව පමණයි.
ඔබේ කේතයේ අනාරක්ෂිත විමසුම් Xygeni සොයා ගන්නේ කෙසේදැයි බැලීමට අවශ්යද?
ප්රධාන කරුණු: මතක තබා ගත යුතු දේ ස්ට්රිප්චාර් සහ එන්නත් කිරීමේ අවදානම්
- ස්ට්රිප්චාර් ආරක්ෂක කාර්යයක් නොවේ. — එය අවදානම් නොව චරිත ඉවත් කරයි.
- ආදාන සනීපාරක්ෂාව ප්රමාණවත් නොවේ. ඔබ string concatenation සමඟ විමසුම් ගොඩනඟන විට.
- පරාමිතිගත විමසුම් නිවැරදි ආරක්ෂාවයි., සහ සෑම නවීන භාෂාවක් හෝ රාමුවක්ම ඒවාට සහය දක්වයි.
- අපැහැදිලි ගෙවීම් පෙරහන් හරහා ලිස්සා යා හැක., විශේෂයෙන් කේතීකරණ උපක්රම සම්බන්ධ නම්.
- ස්ථිතික විශ්ලේෂණය (SAST) මෙවලම් මිනිසුන්ට මග හැරෙන දේ අල්ලා ගනී, උරුම කේතයේ සැඟවී ඇති අනාරක්ෂිත රටා ඇතුළුව.
- Xygeni හඳුනාගැනීම, ප්රමුඛතාවය දීම සහ ප්රතිකර්ම පවා ස්වයංක්රීය කරයි. එවිට ඔබේ කණ්ඩායමට අවදානම් හඹා යාම වෙනුවට ලිවීමේ විශේෂාංග කෙරෙහි අවධානය යොමු කළ හැකිය.
නිගමනය: පෙරහන් විශ්වාස නොකරන්න. නිර්මාණය අනුව ආරක්ෂිතයි.
වැනි කාර්යයන් මත විශ්වාසය තැබීම ස්ට්රිප්චාර් ඉක්මන් විසඳුමක් ලෙස හැඟෙන්නට පුළුවන, නමුත් ඒවා ව්යාජ ආරක්ෂක හැඟීමක් ඇති කරයි. ප්රහාරකයින් නූල් පෙරහන් වලට වඩා වේගයෙන් පරිණාමය වේ. එන්නත් ප්රහාර නැවැත්වීමට ඇති එකම විශ්වාසදායක ක්රමය වන්නේ සැලසුම අනුව ආරක්ෂිත කේතය ලිවීම සහ එම සැලසුම සෑම තැනකම ක්රියාත්මක කිරීමයි.
Xygeni වැනි මෙවලම් ඔබට එය ස්වයංක්රීයව කිරීමට උපකාරී වේ. සිට pull request දක්වා pipeline, ඔවුන් ඔබේ පෙරහන් නොකරන දේ අල්ලාගෙන, එය නිෂ්පාදනයට ළඟා වීමට පෙර එය නිවැරදි කරයි.




