Prófanir fyrir öryggisleysi í SQL

SQL innspýtingarárásir valda gríðarlegum áhættu fyrir vefforrit sem byggjast á gagnagrunni til að búa til kviklegt efni. Í þessari tegund af árás, tölvusnápur vinna vefforrit í tilraun til að sprauta eigin SQL skipanir í þau sem gefin eru út af gagnagrunninum. Til dæmis er að finna greinina SQL Injection Attacks on Databases. Í þessari grein skoðum við nokkrar leiðir til að prófa vefforritið þitt til að ákvarða hvort þau séu viðkvæm fyrir SQL Injection attacks.

Sjálfvirk SQL sprautunarskönnun

Ein möguleiki er að nota sjálfvirkan vefur umsókn varnarleysi skanni, svo sem WebInspect HP, IBM AppScan eða Cenzic er Hailstorm. Þessar verkfærir bjóða upp á auðveldar, sjálfvirkar leiðir til að greina vefforritin þín fyrir hugsanlega veikindi á sprautunni. Hins vegar eru þeir mjög dýrir, hlaupandi á allt að $ 25.000 á sæti.

Handbók SQL sprautupróf

Hvað er léleg forrit forritari að gera? Þú getur reyndar keyrt nokkrar grunnprófanir til að meta vefforritin þín vegna veikinda með veikindum með því að nota ekkert annað en vafra. Í fyrsta lagi er varúð: prófanirnar sem ég lýsa leita aðeins að undirstöðu SQL Injection galla. Þeir munu ekki uppgötva háþróaða tækni og eru nokkuð leiðinlegur að nota. Ef þú hefur efni á því, farðu með sjálfvirkan skanni. Hins vegar, ef þú getur ekki séð um þessi verðmiði, er handbók próf mjög gott fyrsta skrefið.

Auðveldasta leiðin til að meta hvort forritið er viðkvæmt er að gera tilraunir með óhefðbundnum innspýtingarárásum sem munu ekki í raun skaða gagnagrunninn ef þau ná árangri en mun veita þér vísbendingar um að þú þurfir að laga vandamál. Segðu til dæmis að þú hafir einfaldan vefforrit sem leitar upp einstakling í gagnagrunni og veitir upplýsingar um tengilið. Þessi síða gæti notað eftirfarandi slóðarsnið:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

Við getum gert ráð fyrir að þessi síða sinnir gagnasöfnun með því að nota fyrirspurn sem líkist eftirfarandi:

SELECT sími FRÁ möppu WHERE lastname = 'chapple' og fornafn = 'Mike'

Við skulum gera tilraunir með þessu svolítið. Með forsendum okkar hér að framan, getum við gert einfalda breytingu á vefslóðinni sem prófar fyrir SQL innspýtingarárásir:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

Ef vefur umsókn hefur ekki verið rétt varin gegn SQL innspýtingu, tengir það einfaldlega þetta falsa fornafn í SQL staðhæfinguna sem það framkvæmir gagnagrunninum, sem leiðir til:

SELECT sími FRÁ möppu WHERE lastname = 'chapple' og fornafn = 'Mike' og (veldu tölu (*) frá falsa)> 0 OR '1' = '1'

Þú munt taka eftir því að setningafræði hér að ofan er svolítið öðruvísi en í upphaflegu vefslóðinni. Ég tók á sig frelsið að breyta vefslóðkóðuðu breytu fyrir ASCII-jafngildi þeirra til að auðvelda að fylgja dæmiinu. Til dæmis er% 3d vefslóðin fyrir stafinn '='. Ég bætti einnig við nokkrum línuskilum fyrir svipaða tilgangi.

Mat á niðurstöðum

Prófið kemur þegar þú reynir að hlaða inn vefsíðuna með slóðinni hér að ofan. Ef vefur umsókn er vel hegðun, mun það ræma út einn vitna frá inntaki áður en farið er fyrirspurn til gagnagrunnsins. Þetta mun einfaldlega leiða til undarlegt útlit fyrir einhver með fornafn sem inniheldur fullt af SQL! Þú munt sjá villuskilaboð frá forritinu svipað og hér að neðan:

Villa: Enginn notandi fannst með nafninu Mike + AND + (veldu + telja (*) + frá + falsa) +% 3e0 + OR + 1% 3d1 Chapple!

Á hinn bóginn, ef umsóknin er viðkvæm fyrir SQL inndælingu, mun hún standast yfirlýsingu beint í gagnagrunninn, sem leiðir til tveggja möguleika. Í fyrsta lagi, ef netþjónninn þinn hefur nákvæmar villuboð virkt (sem þú ættir ekki!) Muntu sjá eitthvað svona:

Microsoft OLE DB Provider fyrir ODBC Drivers villa '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Ógilt nafn hlutar 'falsa'. /directory.asp, lína 13

Ef hinsvegar, ef vefþjónninn þinn birtir ekki ítarlegar villuboð, færðu fleiri almennar villur, svo sem:

Innri miðlaraþjónn Þjónninn átti innri villa eða misskilning og gat ekki lokið við beiðnina. Vinsamlegast hafðu samband við þjónustustjórann til að upplýsa um hvenær villan átti sér stað og hvað sem þú gætir gert sem gæti hafa valdið villunni. Nánari upplýsingar um þessa villu kunna að vera aðgengileg í villuskrá símafyrirtækisins.

Ef þú færð annaðhvort einn af tveimur villum hér að ofan, er umsóknin þín viðkvæm fyrir SQL innspýting árás! Sumar skref sem þú getur tekið til að vernda forritin gegn SQL Injection árásir eru: