Raha toa ianao ka mampiasa stripchar mba hanadiovana ny fidiran'ny mpampiasa, tsy irery ianao. Maro ireo mpamorona rindrambaiko no miantehitra amin'ity karazana ity fanadiovana ny fidirana mba hanakanana ny andrana fampidirana. Raha vao jerena dia toa lojika raha esorina ireo endri-tsoratra mampidi-doza dia hanjavona ny entana. Na izany aza, ity fomba fiasa ity dia manome fahatsapana fiarovana sandoka. Raha ny marina, ireo mpanafika dia afaka mandingana ireo sivana tsotra toy ny stripchar mampiasa entana tsy mazava, fandikana kaody, na fanovana teny manodidina amim-pahendrena. Izany no mahatonga ireo mpamorona rindrambaiko marani-tsaina tsy mijanona eo. Fa kosa, mampiasa fanontaniana parameterized, izay misoroka ny fanafihana tsindrona hatrany amin'ny fakany.
Ato amin'ity lahatsoratra ity dia ho fantatrao ny antony stripchar tsy mahomby amin'ny toe-javatra tena misy, ny fomba fanararaotan'ireo mpanafika ireo sivana ireo, ary inona avy ireo safidy azo antoka tena miasa. Hodinihintsika ireo ohatra amin'ny kaody, hampiseho teknika fandalovana mahazatra, ary hanazava ny fomba fanadiovana ny fidirana tsy maintsy ampiarahina amin'ny fiarovana ara-drafitra foana toy ny fanontaniana parameterized, na hijanona ho marefo ianao.
Inona stripchar Tena manao (ary tsy manao)
Maro ireo mpamorona rindrambaiko no mampiasa stripchar na asa mitovy amin'izany mba hanesorana ireo endri-tsoratra tsy azo antoka amin'ny fidiran'ny mpampiasa. Matetika izy io dia manala ny mari-piatoana, marika manokana, na zavatra tsy alfa-nomerika. Amin'ny voalohany, toa toy ny fanadiovana ny fidirana, saingy tsy tena fiarovana izany.
Andeha hojerentsika tsirairay izany. Asa toy izao:
function stripchar(input) {
return input.replace(/[^\w\s]/gi, '');
}
manala ireo endri-tsoratra toy ny ', ", na ;Koa raha ampidirinao:
'; DROP TABLE users; --
Lasa:
DROP TABLE users
Na dia toa madio aza ny fidiran'ny mpampiasa, dia mbola afaka mampiditra entana SQL amin'ny alàlan'ny lojika fotsiny ihany ireo mpanafika, indrindra rehefa manorina fangatahana amin'ny alàlan'ny fampiraisana tady ny fampiharana. Mba hisorohana marina ny SQL injection, tsy maintsy mampiasa fangatahana voafaritra tsara sy fikirakirana fidirana mifanaraka amin'ny toe-javatra misy ianao. Sivana endri-tsoratra toy ny stripchar() tsy ampy fotsiny.
Mazava ho azy, mety ho toa azo antoka kokoa raha vao jerena ny fidirana nesorina. Na izany aza, ity fomba fiasa ity dia tsy manafoana ny lojika ratsy, fa manova fotsiny ny fomba fanoratana azy. Raha ny marina, matetika ireo mpanafika dia manararaotra izany amin'ny alàlan'ny fanoratana ny entana, ny fampidirana toerana malalaka, na ny fampiasana endri-tsoratra nesorina mba handalovana tanteraka ny sivanao.
Ankoatra izany, stripchar tsy manana teny manodidina mitsikera. Tsy fantany raha mankany amin'ny tahiry angona, shell, na navigateur ny fidirana. Midika izany fa tsy afaka mampihatra ny fandosirana na ny fandikana angona marina izy. Ny fanadiovana ny fidirana tsy fantatra ny toerana haleha dia toy ny fandosirana HTML raha toa ka eo ny tena fandrahonana. SQLi.
Amin'ny farany, stripchar Tsy mandika na miaro na inona na inona izy, fa manova fotsiny ny tady. Ary ny fanitsiana dia tsy fiarovana. Raha mila fiarovana tena izy ianao dia ampiasao ny fangatahana voarafitra, voamarina ary misy paramètre. Teboka.
Mba hampahazava kokoa ny fahasamihafana, ity ny fomba fampitahana ny stripchar amin'ny fangatahana misy paramètre:
Stripchar vs. Fanontaniana voasokajy: Iza no tena miaro ny kaody-nao?
| endri-javatra | stripchar() | Fanontaniana voasokajy |
|---|---|---|
| Fiarovana | Fanadiovana fototra amin'ny alalan'ny kofehy. Mora diovina amin'ny alalan'ny kaody na tetika lojika. | Fiarovana matanjaka amin'ny endrika rehetra amin'ny SQL injection. |
| Fahatsiarovana ny toe-javatra | Tsy miraharaha ny teny manodidina (SQL, HTML, shell, sns.). Mampihatra fitsipika mitovy foana na aiza na aiza. | Mahalala tsara ny toe-javatra misy. Mampiasa fandosirana sahaza ho an'ny tontolo iainana tsirairay. |
| Ezaka ataon'ny mpamorona | Haingana ny fampiharana saingy tsy azo ianteherana amin'ny fampiasana maharitra. | Mitaky fampidirana araka ny tokony ho izy, saingy matanjaka ary miaro amin'ny hoavy. |
| Fanoherana ny Bypass | Ambany — mora zatra amin'ny fampiasana elanelana fotsy, kaody, na lojika ireo mpanafika. | Avo — manasaraka ny kaody amin'ny angona ary manakana ny fampidirana azy amin'ny fomba azo antoka. |
| Fahatokiana ara-piarovana | Fahatsapana ho voaro diso — mety hanafina ny olana nefa tsy mamaha azy. | Indostria azo itokisana standard ho an'ny fanatanterahana fangatahana azo antoka. |
Ahoana no fomba handavan'ny mpanafika ny fanadiovana ny fidirana
Toy izao no endriky ny fikorianan'ny marefo mahazatra rehefa miantehitra amin'ny stripchar ho an'ny fanadiovana ny fidirana:
Tsy mila manimba ny sivanao ireo mpanafika, fa mila manao izany fotsiny izy ireo mandehana manodidina azy ireoRehefa miantehitra amin'ny stripchar Ho an'ny fanadiovana ny fidirana, matetika izy ireo dia mihevitra fa ny fanesorana ireo endri-tsoratra toy ny teny nalaina na teboka kely dia hanakana ny fanandramana fampidirana. Na izany aza, ireo mpanafika dia zatra haingana. Mamorona izy ireo entana tsy mazava izay tsy mandalo sivana mifototra amin'ny regex, indrindra rehefa tsy misy ifandraisany amin'ny teny manodidina ireo sivana ireo.
Ohatra, andeha hatao hoe miezaka manadio ny fidirana toy izao ianao:
const input = stripchar(userInput);
// safe to use? maybe not.
db.query("SELECT * FROM users WHERE name = '" + input + "'");
Na dia tsy afaka mandefa lahatsoratra mahazatra aza ny mpampiasa ' OR 1=1 --, afaka mampiasa hafetsena Unicode, fampiraisana tady, na syntax tapaka izay mbola miasa izy ireo. Matetika miasa ny entana toy izao:
0x27206F7220313D31--
na:
'+UNION+SELECT+null,null,null--
Raha manala ireo tarehintsoratra tsy misy teny ny asanao dia azonao atao nanamboatra baiko SQL manan-kery tsy nahyRatsy kokoa aza, afaka mandika soatoavina amin'ny fomba izay mandalo ny sivanao ireo mpanafika saingy voavakin'ny rafitra kendrena.
Ankoatra ny SQL injection, stripchar tsy mahomby amin'ny toe-javatra hafa koa, toy ny baiko shell, ny lalan'ny rakitra, na ny fanatanterahana JavaScript aza. Koa satria tsy mahafantatra ny toerana hampiasana ny fidirana izy, dia tsy afaka mampihatra ny fandosirana na ny fanamarinana araka ny tokony ho izy.
Vokatr'izany, fanadiovana ny fidirana amin'ny stripchar mora ny mandingana azy. Ny tena fiarovana dia avy amin'ny fanaraha-maso mifanaraka amin'ny toe-javatra misy, indrindra fanontaniana parameterized izay misoroka tanteraka ny fampidirana lojika.
Nahoana ianao no tokony hampiasa fangatahana voafaritra tsara
Raha tena te hampijanona ny fanafihana amin'ny tsindrona ianao dia mila ajanony ny fananganana fangatahana misy tady. Izay no fanontaniana parameterized midira. Tsy toy ny stripchar, tsy manivana izy ireo, izy ireo manasaraka ny kaody amin'ny angona eo amin'ny sehatry ny motera.
Andeha hojerentsika indray ilay fangatahana tapaka:
const input = stripchar(userInput);
const query = "SELECT * FROM users WHERE name = '" + input + "'";
Mampidi-doza izany satria ampidirina mivantana ao amin'ny SQL ny input. Na dia esorina aza ny endri-tsoratra dia mbola mamorona tady izay mety hampiasaina amin'ny fomba ratsy ianao. Ampiasao kosa ny fangatahana misy paramètre toy izao:
const query = "SELECT * FROM users WHERE name = ?";
db.execute(query, [userInput]);
Eto, fantatry ny mpamily angon-drakitra izany userInput dia angon-drakitra, kaody tsy azo ampiasainaMandositra ho azy izy io ary manakana ny fampidirana, na dia misy teny nalaina, teboka-komany, na entana misy kaody hexagonal aza ny fampidirana.
Ao amin'ny Python:
cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))
Ao amin'ny PHP miaraka amin'ny PDO:
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");
$stmt->execute(['name' => $input]);
Amin'ireo ohatra rehetra ireo, fanontaniana parameterized misoroka ny tsindrona tsy mila maminavina hoe iza amin'ireo endri-tsoratra no mety hampidi-doza. Tsy mila ianao stripchar, mila fananganana fangatahana voarafitra sy mifanaraka amin'ny teny manodidina ianao.
Ankoatra izany, ity teknika ity dia manakana ireo entana voasarona, ireo hafetsena Unicode, ary ireo fandikana kaody, ireo lamina fisorohana mitovy amin'ny hita ao amin'ny Fahalemena XSSIreo fitaovana toa an'i Xygeni dia mahasakana ireo fandrahonana ireo mialoha ny fotoana. SAST fanadihadiana.
Raha fintinina, ny fiarovana tena izy dia tsy miankina amin'ny sivana. Miantehitra amin'ny protocole, API azo itokisana, ary context feno izy ireo. Raha mampiasa frameworks na dynamic service injection ianao, dia fantaro ny fomba iparitahan'ny inputs amin'ny alàlan'ny codebase-nao. Tsindrona fiankinan-doha azo antoka miantoka fa na dia ireo fikorianan-javatra sarotra aza dia tsy hanokatra sehatra fanafihana vaovao.
Aza miantehitra amin'ny stripcharAmpiasao i Xygeni mba hampiharana ny fiarovana tena izy.
Na dia mampiasa aza ianao fanontaniana parameterized, tsy misy antoka fa hanaraka izany avokoa ny codebase-nao rehetra standardNy lojika efa lany andro, ny script avy amin'ny antoko fahatelo, na ireo andalana tsy noraharahaina tao amin'ny PR dia mbola mety hampidi-doza. Izany indrindra no anampian'ny Xygeni.
Xygeni dia mijery ny kaody loharano anao, pull requests, ary CI pipelines mba hisambotra:
- Tady fangatahana izay manorina SQL miaraka amin'ny concatenation
- Sivana malemy na namboarina tao an-toerana toy ny stripchar
- Lojika mampiahiahy izay mifanaraka amin'ny entana fantatra fa voasarona
Tsy mila mikaroka tsara ny andalana rehetra ianao. Mampitandrina mialoha ny lamina tsy azo antoka ny Xygeni, mihatra izany Fanamboarana mandeha ho azy raha azo atao, ary afaka manakana ny fampifangaroana mampidi-doza amin'ny alàlan'ny fanovana Guardrails.
Raha afohezina, Ataon'ny Xygeni izay hahazoana antoka fa tsy fomba fanao tsara fotsiny ny fangatahana misy masontsivana, fa ampiharina amin'ny ambaratonga lehibe. Tsy misy vinavina intsony. Tsy misy sivana tsy voamarika. Fiarovana tena izy fotsiny.
Te hahita ny fomba ahitan'ny Xygeni ireo fangatahana tsy azo antoka ao amin'ny kaody-nao ve ianao?
Hevi-dehibe: Inona no tokony hotadidina stripchar sy ny loza ateraky ny tsindrona
- stripchar tsy asa fiarovana — manala ireo endri-tsoratra izy io, fa tsy mampidi-doza.
- Tsy ampy ny fanadiovana ny fidirana rehefa manorina fangatahana miaraka amin'ny fampifandraisana tady ianao.
- Ny fangatahana voafaritry ny masontsivana no fiarovana marina, ary manohana azy ireo ny fiteny na rafitra maoderina rehetra.
- Mety tsy ho tafiditra ao anatin'ny sivana ireo entana tsy voafehy, indrindra raha misy hafetsena amin'ny fanoratana kaody.
- Fanadihadiana statika (SAST) ny fitaovana dia misambotra izay tsy hitan'ny olombelona, anisan'izany ireo lamina tsy azo antoka miafina ao anaty kaody nentim-paharazana.
- Manao ho azy ny fitadiavana, ny fanomezana laharam-pahamehana, ary na dia ny fanarenana aza ny Xygeni mba hahafahan'ny ekipanao mifantoka amin'ny fanoratana endri-javatra, fa tsy amin'ny fikatsahana ireo fahalemena.
Fehiny: Aza matoky ny sivana. Voaaro araka ny famolavolana.
Miankina amin'ny asa toy ny stripchar Mety ho toa vahaolana haingana izany, saingy mamorona fahatsapana fiarovana sandoka izy ireo. Mivoatra haingana kokoa noho ny sivana tady ny mpanafika. Ny hany fomba azo antoka hampijanonana ny fanafihana amin'ny alalan'ny tsindrona dia ny fanoratana kaody azo antoka araka ny famolavolana azy, ary ny fampiharana izany famolavolana izany na aiza na aiza.
Manampy anao hanao izany ho azy ny fitaovana toa ny Xygeni. pull request ny pipeline, sarihin'izy ireo izay tsy vitan'ny sivanao, ary amboariny izany alohan'ny hahatongavany amin'ny famokarana.







