SQL එන්නත් දුර්වලතා පරීක්ෂා කිරීම

SQL එන්නත් කිරීමේ ප්රහාර මගින් ගතික අන්තර්ගත සෑදීමට දත්ත ගබඩාවක් මත යැපෙන වෙබ් යෙදුම් සඳහා විශාල අවදානමක් ඇත. මෙම වර්ගයේ පහරදීම්වලදී, හැකර් විසින් සියළුම SQL විධානයන් විසින් දත්ත ගබඩාව නිකුත් කරන ලද ඒවාට ඇතුල් කිරීම සඳහා වෙබ් යෙදුමක් මෙහෙයවයි. උදාහරණයක් ලෙස, දත්තගබඩා සඳහා SQL Injection Attacks බලන්න. මෙම ලිපියෙහි, SQL Injection ක්රියාකාරිත්වයට ගොදුරුවිය හැකිද යන්න තීරණය කිරීමට ඔබේ වෙබ් යෙදුම් පරීක්ෂා කර ගත හැකි ක්රම කිහිපයකි.

ස්වයංක්රීය SQL ඉන්ජෙක්ෂන් ස්කෑන් කිරීම

එක් අවස්ථාවක් ස්වයංක්රීයව වෙබ් යෙදුම් අවදානම ස්කැනරයක් භාවිතා කරයි, HP හි WebInspect, IBM's AppScan හෝ Cenzic's Hailstorm. මෙම මෙවලම් සියල්ලම විබෙදුම SQL එන්නත් හඳුනාගැනීම සඳහා ඔබේ වෙබ් යෙදුම් විශ්ලේෂණය කිරීම සඳහා පහසු, ස්වයංක්රීය ක්රමයකි. කෙසේ වෙතත්, ඔවුන් ඉතා මිල අධික වන අතර ආසන සඳහා ඩොලර් 25,000 දක්වා ධාවනය වේ.

අතින් SQL ඉන්ජෙක්ටර් ටෙස්ට්

දුප්පත් යෙදුම් සංවර්ධකයෙක් කරන්නේ කුමක්ද? ඔබ සැබවින්ම වෙබ් බ්රවුසරයට වඩා කිසිවක් භාවිතා නොකර SQL ආක්ෂිප්තත්ව හඳුනාගැනීම් සඳහා ඔබගේ වෙබ් යෙදුම් ඇගයීම සඳහා මූලික පරීක්ෂණ කිහිපයක් සිදු කළ හැකිය. පළමුවෙන්ම, අනතුරු ඇඟවීමේ වචනයක්: මම විස්තර කරන ලද පරීක්ෂණ මූලික SQL Injection සුළු දෝෂයන් සොයයි. ඔවුන් උසස් තාක්ෂණයන් හඳුනා නොගනිති. ඔබට එය ලබා ගත හැකි නම්, ස්වයංක්රීය ස්කෑනරය සමඟ යන්න. කෙසේ වෙතත්, ඔබ එම මිල ටැග් හැසිරවීමට නොහැකි නම්, අතින් අත්හදා බැලීම ඉතා හොඳ පළමු පියවර වේ.

යෙදුමක් අවදානමට ලක් වේදැයි පරීක්ෂා කිරීමට පහසුම ක්රමය නම් සාර්ථක ප්රතිඵල ලබා ගත නොහැකි වුවද ඔබේ දත්ත සමුදායට සැබැවින්ම හානි නොවන තර්ජනාත්මක එන්නත් ප්රහාරයන් අත්හදා බැලීම සඳහා, ඔබට ප්රශ්නයක් නිවැරදි කිරීමට අවශ්ය බවට සාක්ෂි සපයනු ඇත. නිදසුනක් වශයෙන්, දත්ත සමුදායක් තුළ පුද්ගලයෙකු දෙස බැලීමට සරල වෙබ් යෙදුමක් ඇති අතර, එහි ප්රතිපලයක් ලෙස සම්බන්ධතා තොරතුරු සපයන්න. මෙම පිටුව පහත දැක්වෙන URL ආකෘතිය භාවිතා කළ හැකිය:

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

පහත සඳහන් ආකාරයට සමාන විමසුමක් භාවිතා කරමින් මෙම පිටුව දත්ත සමුච්චයක් සොයන බව අපට උපකල්පනය කළ හැකිය:

SELECT phone FROM ඩිරෙක්ටරියේ නම finallyname = 'chapple' සහ firstname = 'mike'

මේක ටිකක් අත්හරින්න. අපගේ උපකල්පනය සමඟ, SQL එන්නත් කිරීමේ ප්රහාර සඳහා පරීක්ෂණ කරන URL වෙත සරල වෙනස් කිරීමක් කළ හැකිය:

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

SQL යෙදීම් වලට එරෙහිව වෙබ් යෙදුම නිසියාකාරව ආරක්ෂා නොකළේ නම්, එය සරලවම ව්යාජ පළමු නම දත්ත සමුදායට එරෙහිව ක්රියාත්මක කරන SQL ප්රකාශය තුළට ඇතුල් කරයි, ප්රතිඵලයක් ලෙස:

SELECT phone FROM ඩිරෙක්ටරියේ නම ෆේස්බුක් වෙතින් FAME එකේ නම = 'chapple' සහ firstname = 'mike' සහ (ව්යාජයෙන් තෝරන්න) * 0 OR '1' = '1'

ඉහත ආකෘතිය මුල් URL එකට වඩා බෙහෙවින් වෙනස් බව ඔබට පෙනෙනු ඇත. උදාහරණයක් ලෙස අනුගමනය කිරීමට පහසු වන පරිදි URL-සංකේතික කළ විචල්යය ASCII සමීකරණ සඳහා පරිවර්තනය කිරීමේ නිදහස මා ලබා ගත්තේය. උදාහරණයක් ලෙස% 3d යනු '=' අක්ෂරය සඳහා URL-කේතක කිරීමයි. ඒ හා සමාන කාර්යයන් සඳහා මා විසින් යම් පේළි බිඳීමක් ද එක් කරන ලදී.

ප්රතිඵල ඇගයීම

ඉහත දැක්වෙන URL සමඟ වෙබ් පිටුව පැටවීමට උත්සාහ කරන විට පරීක්ෂණය සිදු වේ. වෙබ් යෙදුම හොඳින් හැසිරෙන විට එය දත්ත සමුදාය වෙත යොමු කිරීමෙන් පෙර ආදානයෙන් තනි අගයන් ඉවත් කරනු ඇත. මෙය සරලව SQL එකේ පොකුරක් අඩංගු වන පළමු නම සහිත කෙනෙකු සඳහා අමුතු සෙවීමක් වනු ඇත! පහත දැක්වෙන ආකාරයේ යෙදුමෙන් ඔබ දෝෂ සහිත පණිවුඩයක් දකිනු ඇත:

දෝෂයක්: නමක් mike + AND + (+ count (+) + ව්යාජයෙන් + තෝරා නැත) +% 3e0 + OR + 1% 3d1 Chapple!

අනෙක් අතට, යෙදුම SQL එන්නත් වලට ගොදුරු විය හැකි නම්, එම ප්රකාශය සෘජුවම දත්ත සමුදාය වෙත ලබා දෙනු ඇත, ප්රතිපල දෙකක් දෙකක් ඇත. පළමුව, ඔබගේ සේවාදායකයේ සවිස්තරාත්මක දෝෂ සහිත පණිවිඩ තිබේ නම් (ඔබ එය නොකළ යුතුය!), ඔබට මෙවැනි දෙයක් පෙනෙනු ඇත:

ODBC ධාවක දෝෂ සඳහා Microsoft OLE DB සැපයුම්කරු '80040e37' [මයික්රොසොෆ්ට්] [ODBC SQL සේවාදායක ධාවකයක්] [SQL Server] වලංගු නොවන වස්තුවක් 'ව්යාජ'. /directory.asp, පේළිය 13

අනෙක් අතට, ඔබගේ වෙබ් සේවාදායකයේ සවිස්තරාත්මක දෝෂ වාර්තා නොලැබුවහොත්, ඔබට තවත් පොදු දෝශයක් ලැබෙනු ඇත:

අභ්යන්තර සේවාදායකයේ දෝෂයක් සේවාදායකයේ අභ්යන්තර දෝශයක් හෝ ව්යාජ සැකසීමක් සිදුවී ඇති අතර ඔබගේ ඉල්ලීම සම්පූර්ණ කිරීමට නොහැකි විය. දෝෂය සිදුවූ අවස්ථාව ගැන දන්වන ලෙස ද, ඔබ කළ හැකි ඕනෑම දෙයක් පිළිබඳ දෝෂයක් ඇතිවිය හැකිය සේවාදායක පරිපාලකයා අමතන්න. මෙම දෝෂය පිළිබඳ වැඩි විස්තර සේවාදායකයේ දෝශනාවේ ලඝු-සටහන් තුල ඇත.

ඉහත දෝෂ දෙකෙන් එකක් හෝ ලැබුණහොත්, ඔබේ යෙදුම SQL එන්නත් ප්රහාරයට ලක් විය හැක! SQL එන්නත් කිරීමේ ප්රහාරයන්ට එරෙහිව ඔබේ යෙදුම් ආරක්ෂා කිරීමට ඔබට ගත හැකි පියවර කිහිපයක් පහත දැක්වේ: