·í§A¾Ç·|¤F¸ê®Æ®w»P ASP ªº¾ã¦X¡A¤@©w«Ü°ª¿³¡A¦Ó¥B«æµÛ§â©Ò¦³ªº¸ê®Æ³£©ñ¨ì¸ê®Æ®w¡A¥H«K¶i¦æ§ó¦nªº¸ê®ÆºÞ²z¡C¦b¤U±³oÓ½d¨Ò¤¤¡A§Ú̱N¨Ï¥ÎªÌªº±K½X¦s©ñ¦b¸ê®Æ®w¤§¤¤¡A¥H¹ï¨Ï¥ÎªÌªº±b¸¹©M±K½X¶i¦æ¦³®ÄªººÞ²z¡A¦¹¸ê®Æ®wªº¤º®e¦p¤U¡]password.mdb¡^¡G
userid passwd CS3431 CS3431 ªL¬F·½ gavins ³¯¦¿§ø jtchen ¸¨Î¼z beball ®Ú¾Ú¦¹¸ê®Æ®w¡A§ÚÌ´N¥i¥H¼g¤@Ó ASP ºô¶¨Ó¶i¦æ±b¸¹©M±K½Xªº»{ÃÒ¡G
¨äì©l½X¦C¥X¦p¤U¡A¥H¨ÑŪªÌ¤ñ¸û¡G
¬Ý°_¨Ó¤@¤Á¨S°ÝÃD¡A¦ý¬O¦pªG§A·Q¡uÀb¡v¡]Hack!¡^ ³oÓºô¯¸¡A¨Æ¹ê¤W¥un¿é¤J¤U¦C¸ê®Æ´N¥i¥H¤F¡G
¡]½Ð»°§Ö¸Õ¸Õ¬Ý¡I¡^³o¬O¬°¤°»ò©O¡H¨Æ¹ê¤W³o´N¬O´c¦W¬L¹üªº¡u¸ê®ÆÁô½X¡v¡]SQL Injection¡^¯ä¦ä¡A²³æ¦a»¡¡A´N¬O±N¡u±b¸¹¡v©M¡u±K½X¡v¶ñ¤J¨ã¦³³æ¤Þ¸¹ªº¯S®í¦r¦ê¡A³y¦¨¦øªA¾¹ºÝ¦b±µ¦X³o¨ÇÄæ¦ì¸ê®Æ®É¡A·|·N¥~¦a²£¥Í¦X®æªº SQL «ü¥O¡A³y¦¨±K½X»{ÃÒªº¦¨¥\¡Cn¯S§Oª`·Nªº¬O¡ASQL Injection ªº°ÝÃD¤£¥uµo¥Í¦bþºØ¯S©w¥¥x©Î»y¨¥¡A¥un¬O¨Ï¥Î SQL «ü¥O¦s¨ú¸ê®Æ®w¤ºªº¸ê®Æ¡A³£¦³¥i¯à²£¥Í³oÓ°ÝÃD¡C
- ±b¸¹¡G*****¡]¶Ã¥´¤@³q¡^
- ±K½X¡G' or 'a'='a
§Ú̦A¨Ó¥J²Ó¬Ý¬Ý¤W±³oÓ½d¨Ò¡A¨ä¤¤²£¥Í SQL «ü¥Oªº±Ôz¦p¤U¡G
SQL = "select * from password where userid='" + Request("user") + "' and passwd='" + Request("passwd") + "'"; ¬Ý°_¨ÓÅ޿觹¥þ¥¿½T¡A¨Ò¦p·í¿é¤J±b¸¹©M±K½X¤À§O¬O¡uªL¬F·½¡v©M¡ugavins¡v®É¡A©Ò±o¨ìªº SQL «ü¥O¬O¡GSQL = "select * from password where userid='ªL¬F·½' and passwd='gavins'";©Ò¥H¥i¥H±q¸ê®Æ®w¤¤¬d¨ì¤@µ§¸ê®Æ¡A¥Nªí±b¸¹©M±K½X¥¿½T¡C¦ý¬O·í§Ú̱b¸¹©M±K½X¤À§O¬O¡uxyz¡v©M¡u' or 'a'='a¡v®É¡A©Ò±o¨ìªº SQL «ü¥O¬OSQL = "select * from password where userid='xyz' and passwd='' or 'a'='a'";«Ü¤£©¯ªº¡A©Ò²£¥Íªº SQL «ü¥O¤]·|°õ¦æ¦¨¥\¡]¦]¬° 'a'='a' ¬O¤@©w¦¨¥ßªº¡^¡A¦]¦Ó±q¸ê®Æ®w¤¤§ì¥X¦hµ§¸ê®Æ¡A³oºØ°Å±µ¤âªk§Ï©»¬O¦b SQL «ü¥O¤¤¡uÄéª`¡v¤@¨Ç´c·Nªº¦r¦ê¡A©Ò¥HºÙ¬°¡uSQL Injection¡v¡C¦p¦óÁקK SQL Injection ©O¡H³Ì²³æªº§@ªk¡A´N¬O¦b¨ú¥Î«È¤áºÝ°e¶i¨Óªº¸ê®Æ«e¡A¥ý§R°£©Ò¦³¥i¯à³y¦¨°ÝÃDªº¯S®í¦r¤¸¡A³o¨Ç¦r¤¸¥]¬A³æ¤Þ¸¹¡]'¡^¡BÂù¤Þ¸¹¡]"¡^¡B°Ý¸¹¡]?¡^¡B¬P¸¹¡]*¡^¡B©³½u¡]_¡^¡B¦Ê¤À¤ñ¡]%¡^¡BAmpersand¡]&¡^µ¥¡A³o¨Ç¯S®í¦r¤¸³£¤£À³¸Ó¥X²{¦b¨Ï¥ÎªÌ¿é¤Jªº¸ê®Æ¤¤¡C¥t¥~¡A§R°£¯S®í¦r¤¸ªº°Ê§@°È¥²n¦b¦øªA¾¹ºÝ¶i¦æ¡A¦]¬°¥Î¤áºÝªº JavaScript ªí³æÅçÃÒªºÀˬd¬O¥u¯à¨¾§g¤l¡A¤£¯à¨¾¤p¤H¡A§O¤H¥un°µ¤@Ó¦³¬Û¦PÄæ¦ìªººô¶¡A´N¤@¼Ë¥i¥H©I¥s§Aªº ASP µ{¦¡½X¨Ó¨ú¥Î¸ê®Æ®w¡A¶i¦ÓÁ׶}ìºô¶ªºªí³æÅçÃÒ¥\¯à¡C
Yn§R°£³o¨Ç¦MÀI¦r¤¸¡A¥i¥H¨Ï¥Î JavaScript ªº¦r¦êªº replace() ¤èªk¡A©Î¬O¨Ï¥Î VBScript ªº Replace ¨ç¼Æ¡A¨Ò¦p¡G
¨äì©l½X¦C¥X¦p¤U¡G
¦b¤Wzì©l½X¤¤¡A¦]¬° Request("userid") ©M Request("passwd") ªº¸ê®Æ¬OµLªkק諸¡A©Ò¥H¦b¨ú¥N«en¥ý¦s¨ì¥t¤@ÓÓÅܼơC¥Ñ¦¹½d¨Ò¥i¥Hª¾¹D¡A¥un§R°£¨Ï¥ÎªÌ¿é¤J¦r¦ê¤¤ªº©Ò¦³³æ¤Þ¸¹¡A´N¥i¥HÁקK SQL Injection ªº°ÝÃD¡C
¨Æ¹ê¤W¡A¥i¥H§Î¦¨ SQL Injection ªº´c·N¦r¦êÁÙ¤£¤Ö¡A¦ý¤j³¡¤À¬O°w¹ï·L³nªº SQL Server ¸ê®Æ®w¨Ó¶i¦æ¯}Ãa¡CY¦³¿³½ì¡AŪªÌ¥i¦Û¦æ°Ñ¦Ò¤U¦C°Ñ¦Ò¸ê®Æ¡G
- ¡y¸ê®ÆÁô½X¡zSQL Injectionªº·½¥Ñ»P¨¾½d¤§¹D¡Ghttp://www.microsoft.com/taiwan/sql/SQL_Injection.htm ¡]ªñºÝ³Æ¥÷¡Gasp/download/¡y¸ê®ÆÁô½X¡zSQL Injection ªº¦]À³»P¨¾½d¤§¹D.mht¡^
- SQL Injection (¸ê®ÆÁô½X)¡V Àb«Èªº SQL¶ñªÅ¹CÀ¸(¤W)¡Ghttp://www.microsoft.com/taiwan/sql/SQL_Injection_G1.htm ¡]ªñºÝ³Æ¥÷¡Gasp/download/SQL Injection (¸ê®ÆÁô½X)¡V Àb«Èªº SQL¶ñªÅ¹CÀ¸(¤W).mht¡^
- SQL Injection (¸ê®ÆÁô½X)¡V Àb«Èªº SQL¶ñªÅ¹CÀ¸(¤U)¡Ghttp://www.microsoft.com/taiwan/sql/SQL_Injection_G2.htm ¡]ªñºÝ³Æ¥÷¡Gasp/download/SQL Injection (¸ê®ÆÁô½X)¡V Àb«Èªº SQL¶ñªÅ¹CÀ¸(¤U).mht¡^
¦pªG§A¨ì Google ¥´¤J¡uµn¤J¡v¡A¦A¹ï»Ýnµn¤Jªººô¯¸¶i¦æ SQL Injection ªº´ú¸Õ¡A´NÀ³¸Ó¥i¥H§ä¨ì¤@¨Ç¤£³]¨¾ªººô¯¸¡C½Ð¤d¸U¤£n§@´c¡AY§ä¨ì³o¨Ç¤£³]¨¾ªººô¯¸¡A±N¤U¦C¤å¦r±Hµ¹¦¹ºô¯¸ªººûÅ@ªÌ¡]¤]¥i±N°Æ¥»±Hµ¹§Ú¡^¡G
·q±ÒªÌ¡GÁÂÁ±zªº§V¤O¡A³o¨Çºô¯¸ªººÞ²zªÌ·|·PÁ§A̪ºµ½¤ß¡I§Ú̬ã²ß±i´¼¬P¦Ñ®vªº¡uJavaScriptµ{¦¡³]p»PÀ³¥Î¡v¡A¹ïºô¸ô¤Wªººô¶¶i¦æ SQL Injection ªº´ú¸Õ¡Aµoı±zªºµn¤Jºô¶¡]ºô§}¬O http://xxx.xxx.xxx¡^¨ÃµLªk¹ï§Ü SQL Injection ªº¤J«I¡A¥un±b¸¹¥ô·N³]©w¡B±K½X³]©w¬°¡u' or 'a'='a¡v¡A§Y¥iµn¤J¡C
³o¬O¤@«Êµ½·Nªº«H¡A§Ú̶ȴú¸Õ¬O§_¥i¥Hµn¤J¡A¨Ã¥¼¹ï¸ê®Æ¶i¦æ¥ô¦óקï¡A½Ð¬d·Ó¡AÁÂÁ¡C
¡]½Ð¼g¥X§Aªº¥þ¦W¡^
JScript µ{¦¡³]p»PÀ³¥Î¡G¥Î©ó¦øªA¾¹ºÝªº ASP Àô¹Ò