¤Ï¤¸¤á¤Ë
ºÇ¶áWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÀȼåÀ¤Ë¹¶·â¦¤Î´Ø¿´¤¬¹â¤Þ¤ê¡¢¿ô¿¤¯¤ÎWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥»¥¥å¥ê¥Æ¥£¥Û¡¼¥ë¤Ë¤è¤ë¾ðÊóϳ¤¨¤¤»ö·ï¤¬È¯À¸¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤ÎÃæ¤Ç¤âSQL Injection¤ÏÀŲ¬¿·Ê¹¤ä¥ï¥³¡¼¥ëÅù¤ÇÏÃÂê¤È¤Ê¤ê¡¢Â礤¤ËÃíÌܤò½¸¤á¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤È¤³¤í¤¬¡¢Ì¤¤À¤ËÌäÂê¤ÎËܼÁ¤ò½½Ê¬¤ËÍý²ò¤·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢Âкöϳ¤ì¤Ë¤è¤ê¡¢¾ðÊóϳ¤¨¤¤¤¬È¯À¸¤¹¤ë¤Ê¤É¤Î»ö·ï¤òµ¯¤³¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤³¤Ç¡¢¤³¤Îʸ½ñ¤Ç¤Ï¡¢SQL Injection¤Î»ÅÁȤߤÈÂкö¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Æ¤¤¤¤Þ¤¹¡£
SQL Injection¤Î»ÅÁȤß
SQL Injection¤È¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤ª¤¤¤ÆRDB¤ÇǤ°Õ¤ÎÃͤò¸¡º÷¾ò·ï¡¢¹¹¿·ÆâÍÆÅù¤Ë»ÈÍѤ¹¤ë¾ì¹ç¤Ë¡¢Ç¤°Õ¤ÎSQLʸ¤ò¼Â¹Ô¤µ¤»¤Æ¤·¤Þ¤¦¼êË¡¤Ç¤¹¡£¤³¤ì¤Ï¡¢Web¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¸Â¤é¤º¡¢RDB¤ò»ÈÍѤ·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¡¦¥µ¡¼¥Ð¡¼·¿¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤âȯÀ¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î¹¶·â¼êË¡¤ò°ÍѤ¹¤ë¤³¤È¤Ç¡¢¥æ¡¼¥¶¡¼¤Ï³«È¯¼Ô¡¢±¿ÍÑ´ÉÍý¼Ô¤¬Í½´ü¤·¤Ê¤¤¤è¤¦¤ÊSQLʸ¤òȯ¹Ô¤·¡¢RDB¤ò¼«Í³¤ËÁàºî¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥Ç¡¼¥¿¤Îºï½ü¡¢Äɲᢲþ¤¶¤ó¡¢¼èÆÀ¤È¤¤¤Ã¤¿¤³¤È¤«¤é¡¢RDBMS¤Ë¤è¤Ã¤Æ¤ÏDB¥µ¡¼¥Ð¡¼¤ÇOS¥³¥Þ¥ó¥É¤¹¤é¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
ÆÃ¤Ëºòº£¤ÎWeb¥µ¡¼¥Ó¥¹¤Ç¤ÏÇØ¸å¤ËRDB¤¬¤ª¤«¤ì¡¢¸Ä¿Í¾ðÊó¤Ê¤É½ÅÍפʾðÊó¤¬RDB¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬Èó¾ï¤Ë¿¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢SQL Injection¤ËÂкö¤¹¤ë¤³¤È¤Ï½ÅÍפǤ¹¡£
¤Ç¤Ï¡¢²¿¸ÎSQL Injection¤È¤¤¤¦¤â¤Î¤¬È¯À¸¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¤·¤ç¤¦¤«¡©¤½¤ì¤ò¸«¤Æ¤¤¤¤Þ¤¹¡£
¿¤¯¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢¾ðÊó¤Î¸¡º÷¡¢Äɲᢺï½ü¡¢¹¹¿·¤È¤¤¤Ã¤¿½èÍý¤ò¹Ô¤¦ºÝ¤ËSQLʸ¤ò»È¤Ã¤ÆRDB¤òÁàºî¤·¤Þ¤¹¡£Î㤨¤Ð¡¢¸¡º÷¤ò¹Ô¤¦SQLʸ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Îã1¡§
SELECT userID,userName from userTable where userID = 20060001;
userTable¤Î¥Æ¡¼¥Ö¥ë¹½Â¤
|
¹àÌÜ̾ |
°À |
|
userID |
¿ôÃ͹àÌÜ |
|
userName |
ʸ»ú¹àÌÜ |
¾åµSQLʸ¤Ç¤Ï¡¢¥Æ¡¼¥Ö¥ëuserTable¤«¤éuserID¤¬¡Ö20060001¡×¤Î¤â¤Î¤ò¸¡º÷¤·¡¢¤½¤Î¾ò·ï¤Ë¹ç¤¦userID¤ÈuserName¤ò¼èÆÀ¤·¤Þ¤¹¡£¤³¤Î¡Ö20060001¡×¤òÊѹ¹¤¹¤ë¤³¤È¤Ç¡¢Â¾¤Î¸¡º÷¾ò·ï¡¢Î㤨¤Ð¡¢userID¤¬¡Ö20060002¡×¤È¤¤¤Ã¤¿¥ì¥³¡¼¥É¤Î¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Îã2¡§
SELECT userID,userName from userTable where userID = 20060002;
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¥æ¡¼¥¶¤¬¤É¤Î¤è¤¦¤Ê¸¡º÷¾ò·ï¤¬É¬ÍפȤʤ뤫ʬ¤«¤é¤Ê¤¤¤Î¤Ç¡¢¡Ö20060001¡×¤ÎÉôʬ¤ò¸ÇÄê²½¤»¤º¤ËÊÑ¿ô¤Ç¾ò·ï¤òÊѹ¹¤¹¤ë¤³¤È¤¬°ìÈÌŪ¤Ç¤¹¡£¤½¤Î¤È¤¤Î¥×¥í¥°¥é¥àÎ㤬°Ê²¼¤ÎÎã3¤Ç¤¹¡£
Îã3¡§
|
10 |
ÅϤµ¤ì¤¿[¥Ç¡¼¥¿£±]¤òuser¤ËÂåÆþ¤¹¤ë |
|
20 |
sql = "SELECT userID,userName from userTable where userID = " + user + ";" |
|
30 |
[SQLʸ¡Ösql¡×¤Î¼Â¹Ô] |
¾åµÎã3¤Ç[¥Ç¡¼¥¿£±]¤ÎÆâÍÆ¤¬Å¬ÀÚ¤ÊÃͤ«¤É¤¦¤«¤ÎȽÃǤ¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢SQL Injection¤¬È¯À¸¤·¤Þ¤¹¡£
Î㤨¤Ð¡¢userID¤Ï¿ôÃ͹àÌܤȤ·¤Æ¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿1¤¬¿ôÃͤÀ¤±¤Î¥Ç¡¼¥¿¤«¤Î¥Á¥§¥Ã¥¯¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥Ç¡¼¥¿1¤Ëʸ»ú¤¬Æþ¤Ã¤Æ¤¤Þ¤¹¡£
Îã4¡§
|
10 |
ÅϤµ¤ì¤¿"user1"¤òuser¤ËÂåÆþ¤¹¤ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// user1¤¬¸¡º÷¾ò·ï¤È¤·¤ÆÆþÎϤµ¤ì¤¿ |
|
20 |
sql = "SELECT userID,userName from userTable where userID = " + user + ";" |
|
30 |
[SQLʸ¡Ösql¡×¤Î¼Â¹Ô] |
¤½¤¦¤¹¤ë¤È20¹Ô¤ÇÊÑ¿ôsql¤ÎÆâÍÆ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Îã5¡§
SELECT userID,userName from userTable where userID = user1;
¤³¤ì¤ò¼Â¹Ô¤¹¤ë¤È¡¢¿ôÃ͹àÌܤǤ¢¤ëuserID¤òʸ»ú¥Ç¡¼¥¿¡Öuser1¡×¤Ç¸¡º÷¤·¤è¤¦¤È¤¹¤ë¤Î¤Ç¡¢SQL¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£¤È¤³¤í¤¬¡¢¡Öuser1¡×¤ò¡Ö1 or 1 = 1 ¡×¤È¤¤¤¦Ê¸»úÎó¤ËÊѹ¹¤¹¤ë¤È¡¢20¹Ô¤ÇÊÑ¿ôsql¤ÎÆâÍÆ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Îã6¡§
SELECT userID,userName from userTable where userID = 1 or 1 = 1;
¤³¤ÎSQLʸ¤ò¼Â¹Ô¤¹¤ë¤È¡¢1=1¤È¤¤¤¦¾ò·ï¤¬À®¤êΩ¤Ä¤Î¤Ç¡¢userTable¤ÎÁ´¤Æ¤Î¥ì¥³¡¼¥É¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£¤³¤Î·ë²Ì¡¢ËÜÍè¼èÆÀ¤Ç¤¤Æ¤Ï¤¤¤±¤Ê¤¤¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤¬¡¢SQL Injection¤ÎºÇ¤â´Êñ¤Ê»ÅÁȤߤǤ¹¡£
¥ï¥³¡¼¥ëÅù¤Ç¤Ï¤³¤¦¤¤¤Ã¤¿¼êË¡¤ò»È¤Ã¤ÆËÜÍ踫¤¨¤Ê¤¤¤Ï¤º¤Î¥Ç¡¼¥¿¤ò¸«¤ë¤³¤È¤¬²Äǽ¤Ç¤·¤¿¡£
¤µ¤Æ¤³¤³¤Ç¡¢userID¤Ï¿ôÃ͹àÌܤʤΤǡ¢¿ôÃͤ·¤«¼è¤é¤Ê¤¤¤³¤È¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤ì¤Ð¤³¤Î¥¿¥¤¥×¤ÎSQL Injection¤òËɤ²¤ë¤Ç¤·¤ç¤¦¤«¡©¤½¤³¤Ç¡¢¿ôÃ͹àÌܤΥÁ¥§¥Ã¥¯¤òSQLʸ¤ò¼Â¹Ô¤¹¤ëÁ°¤ËÆþ¤ì¤Æ¹Í¤¨¤Æ¤ß¤Þ¤¹¡£
Îã7¡§
|
10 |
ÅϤµ¤ì¤¿" 1 or 1 = 1 or 1 = 0"¤òuser¤ËÂåÆþ¤¹¤ë¡¡¡¡¡¡// ¡Ö 1 or 1 = 1 or 1 = 0¡×¤¬¸¡º÷¾ò·ï¤È¤·¤ÆÆþÎϤµ¤ì¤¿ |
|
15 |
if (user¤¬¿ôÃͰʳ°¤«¡©) then ¥¨¥é¡¼½èÍý |
|
20 |
sql = "SELECT userID,userName from userTable where userID = " + user + ";" |
|
30 |
[SQLʸ¡Ösql¡×¤Î¼Â¹Ô] |
¤³¤Î¾ì¹ç¡¢15¹Ô¤Çuser¤¬¿ôÃͰʳ°¤¬Æþ¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¥¨¥é¡¼½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¤³¤Î·ë²ÌͽÁÛ¤·¤Ê¤¤SQLʸ¡ÊÁ´¤Æ¤Î¥ì¥³¡¼¥É¤ò¸¡º÷·ë²Ì¤È¤·¤ÆÊÖ¤¹SQLʸ¡Ë¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤òËɤ°¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤³¤Î¤è¤¦¤ËÆþÎϤµ¤ì¤¿¥Ç¡¼¥¿¤òŬÀڤ˥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤³¤È¤ÇSQL Injection¤òËɤ°¤³¤È¤¬²Äǽ¤Ç¤¹¡£
SQL InjectionÂкö
¤Ç¤Ï¡¢¼ÂºÝ¤Ë¤É¤Î¤è¤¦¤ÊÂкö¤ò¤¹¤ì¤Ð¤è¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©¤½¤ì¤ò¤³¤³¤Ç¤Ï¸«¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¡¢¤â¤Ã¤È¤â¤è¤¤Âкö¤Ï¸À¸ì¡¢¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤¬È÷¤¨¤Æ¤¤¤ë¥Ð¥¤¥ó¥É¥á¥«¥Ë¥º¥à¤òÍøÍѤ¹¤ëÊýË¡¤Ç¤¹¡£¤³¤ì¤òÍѤ¤¤ë¤È¸À¸ì¤ä¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤¬¼«Æ°Åª¤Ë·¿¤ò¥Á¥§¥Ã¥¯¤·¡¢ÉÔŬÀÚ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¥¨¥¹¥±¡¼¥×½èÍý¤ò¹Ô¤Ã¤Æ¤¯¤ì¤Þ¤¹(⤷¡¢Á´¤Æ¤¬¤³¤ì¤Ç°ÂÁ´¤Ë¤Ê¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£DB¤Ç»ÈÍѤ¹¤ëʸ»ú¥³¡¼¥É¤È¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ç»ÈÍѤ·¤Æ¤¤¤ëʸ»ú¥³¡¼¥É¤¬°Û¤Ê¤ë¾ì¹ç¡¢Âкö¤Ë¤Ê¤é¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£DB¤Ç»ÈÍѤ¹¤ëʸ»ú¥³¡¼¥É¤È¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ç»ÈÍѤ¹¤ëʸ»ú¥³¡¼¥É¤ÏƱ°ì¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¡Ë¡£
¤·¤«¤·¡¢¤½¤Î¤è¤¦¤Ê»ÅÁȤߤ¬¤Ê¤¤¡¢¼ã¤·¤¯¤Ï²¿¤é¤«¤ÎÍýͳ¤Ç»ÈÍѤǤ¤Ê¤¤¾ì¹ç¡¢ÉÔŬÀÚ¤Êʸ»ú¤ò¥¨¥¹¥±¡¼¥×½èÍý¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢WAF¡ÊWeb Application Firewall¡Ë¤ò»ÈÍѤ·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼é¤ë¾ì¹ç¤Ï¤ä¤Ï¤ê¡¢ÉÔŬÀÚ¤Êʸ»ú¤¬²¿¤«¤òÍý²ò¤·¤Æ¤¤¤Ê¤¤¤ÈËɸ椹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢°ì¤Ä¤º¤Ä¥±¡¼¥¹¤ò¸«¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
£±¡¥¿ôÃ͹àÌܤò¸¡º÷¾ò·ï¤Ë¤¹¤ë¾ì¹ç
hoe¤¬¿ôÃ͹àÌܤξì¹ç¡¢²¼µ¤Î¤è¤¦¤ÊSQLʸ¤¬ÍøÍѤµ¤ì¤Þ¤¹¡£
¡ SELECT * FROM hoge WHERE hoe = [¥Ç¡¼¥¿];
¢ DELETE FROM hoge WHERE hoe = [¥Ç¡¼¥¿];
£ UPDATE hoge SET hau = 'hauu' WHERE hoe = [¥Ç¡¼¥¿];
¤³¤ì¤é¤Î¾ì¹ç¡¢¹àÌÜhoe¤¬¿ôÃ͹àÌܤǤ¢¤ë¤¿¤á¡¢Àµ¾ï¤Ê¸¡º÷¾ò·ï¤Î¾ì¹ç¡¢[¥Ç¡¼¥¿]¤Ë¿ôÃͰʳ°¤¬Æþ¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤·¤¿¤¬¤Ã¤Æ¡¢¸¡º÷¾ò·ï¤È¤·¤Æ¿ôÃͰʳ°¤¬Æþ¤Ã¤Æ¤¯¤ë¤è¤¦¤Ê¤³¤È¤¬¤¢¤ì¤Ð¡¢ÌÀ¤é¤«¤Ë¥¨¥é¡¼¤È¤·¤Æ¤·¤Þ¤Ã¤Æ¤è¤¤¤Ï¤º¤Ç¤¹¡£
¤³¤Î°Ù¡¢¤³¤Î¥±¡¼¥¹¤Ç¤Ï[¥Ç¡¼¥¿]¤¬¿ôÃͤΤߤǹ½À®¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
£²¡¥¿ôÃ͹àÌܤΥǡ¼¥¿¤ò¹¹¿·¤¹¤ë¾ì¹ç
hoe¤¬¿ôÃ͹àÌܤξì¹ç¡¢²¼µ¤Î¤è¤¦¤ÊSQLʸ¤¬ÍøÍѤµ¤ì¤Þ¤¹¡£
¡ INSERT INTO hoge (hau,hoe) VALUE ('hauu',[¥Ç¡¼¥¿]);
¢ UPDATE hoge SET hoe = [¥Ç¡¼¥¿] WHERE hau = 'hauu';
¤³¤ì¤é¤Î¾ì¹ç¤â¡¢¹àÌÜhoe¤¬¿ôÃ͹àÌܤǤ¢¤ë¤¿¤á¡¢ÂåÆþ¤Ç¤¤ë¤â¤Î¤Ï¿ôÃͤΤߤȤʤê¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¥±¡¼¥¹¤â[¥Ç¡¼¥¿]¤Ë¿ôÃͰʳ°¤¬Æþ¤Ã¤Æ¤¯¤ë¤³¤È¤¬¤¢¤ì¤Ð¡¢ÌÀ¤é¤«¤Ë¥¨¥é¡¼¤È¤·¤Æ¤·¤Þ¤Ã¤Æ¤âÌäÂê¤Ê¤¤¤Ï¤º¤Ç¤¹¡£
¤³¤Î°Ù¡¢¤³¤Î¥±¡¼¥¹¤â£±¡¥¤ÈƱÍͤ˿ôÃͤΤߤÇ[¥Ç¡¼¥¿]¤¬¹½À®¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
£³¡¥Ê¸»ú¹àÌܤò¸¡º÷¾ò·ï¤Ë¤¹¤ë¾ì¹ç
hoe¤¬Ê¸»ú¹àÌܤξì¹ç¡¢²¼µ¤Î¤è¤¦¤ÊSQLʸ¤¬ÍøÍѤµ¤ì¤Þ¤¹¡£
¡ SELECT * FROM hoge WHERE hoe = '[¥Ç¡¼¥¿]';
¢ SELECT * FROM hoge WHERE hoe = "[¥Ç¡¼¥¿]";
£ DELETE FROM hoge WHERE hoe = '[¥Ç¡¼¥¿]';
¤ DELETE FROM hoge WHERE hoe = "[¥Ç¡¼¥¿]";
¥ UPDATE hoge SET hau = 'hauu' WHERE hoe = '[¥Ç¡¼¥¿]';
¦ UPDATE hoge SET hau = 'hauu' WHERE hoe = "[¥Ç¡¼¥¿]";
¤³¤Î¾ì¹ç[¥Ç¡¼¥¿]¤Ë¤É¤Î¤è¤¦¤Êʸ»ú¤¬Æþ¤Ã¤Æ¤¯¤ë¤«¤ï¤«¤é¤Ê¤¤¤³¤È¤¬¤Û¤È¤ó¤É¤Ç¤¹¡£SQLʸ¤Ç¤Ïʸ»úÎó¤Î¶èÀÚ¤ê¤Ë¡Ö"¡×¡¢¡Ö'¡×¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£¤³¤Î¤è¤¦¤Êʸ»ú¤¬¥Ç¡¼¥¿¤ËÆþ¤Ã¤Æ¤¯¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢[¥Ç¡¼¥¿]¤ÎÆâÍÆ¤¬¡Öaaa' or 'b'='b¡×¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢¡¤ÎSQLʸ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡' SELECT * FROM hoge WHERE hoe = 'aaa' or 'a' = 'a';
ËÜÍè¤Ç¤¢¤ì¤Ð¡¢hoe¤¬¡Öaaa' or 'b' = 'b¡×¤Ç¤¢¤ë¤â¤Î¤ò¸¡º÷¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡¢¼ÂºÝ¤Ë¸¡º÷¤µ¤ì¤ë¤Î¤Ï¥Æ¡¼¥Ö¥ëhoge¤Ë¤¢¤ëÁ´¤Æ¤Î¥Ç¡¼¥¿¤ò¸¡º÷·ë²Ì¤È¤·¤ÆÊÖ¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ë¤Þ¤Ã¤¿¤¯°Õ¿Þ¤·¤Ê¤¤SQLʸ¤¬½ÐÍè¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
ËÜÍè˾¤à·ë²Ì¤òÆÀ¤ë¤¿¤á¤Ë¤Ï[¥Ç¡¼¥¿]¤ò¥¨¥¹¥±¡¼¥×½èÍý¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£SQLʸ¤Ç¤Ï¡Ö'¡×¤ò¡Ö''¡×¡¢¡Ö"¡×¤ò¡Ö""¡×¤Çɽ¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¾åµÎã¤Ç¤Ï¡Öaaa'' or ''b''=''b¡×¤È¤¤¤¦¤è¤¦¤ËÊÑ´¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î·ë²Ì¡'¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡'' SELECT * FROM hoge WHERE hoe = 'aaa'' or ''a'' = ''a';
¤³¤Î·ë²ÌËÜÍè˾¤ó¤Ç¤¤¤¿¡Öaaa' or 'b' = 'b¡×¤òÆÀ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¾åµ°Ê³°¤Ë¤â¸¡º÷¾ò·ï¤ò¤¢¤¤¤Þ¤¤¤Ë¤·¤¿¤¤¾ì¹ç¤Ê¤É¤Ç¤Ï¡Ö=¡×¤ÎÂå¤ï¤ê¤Ë¡ÖLIKE¡×¤ò»ÈÍѤ·¤Þ¤¹¤¬¡¢¤³¤Î¤È¤¡Ö%¡×¤ä¡Ö_¡×¤ò¥ï¥¤¥ë¥É¥«¡¼¥É¤È¤·¤Æ»ÈÍѤ¹¤ë¤Î¤Ç¤³¤¦¤¤¤Ã¤¿Ê¸»ú¤â¥¨¥¹¥±¡¼¥×½èÍý¤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
£´¡¥Ê¸»ú¹àÌܤΥǡ¼¥¿¤ò¹¹¿·¤¹¤ë¾ì¹ç
hoe¤¬Ê¸»ú¹àÌܤξì¹ç¡¢²¼µ¤Î¤è¤¦¤ÊSQLʸ¤¬ÍøÍѤµ¤ì¤Þ¤¹¡£
¡ INSERT INTO hoge (hau,hoe) VALUE ('hauu','[¥Ç¡¼¥¿]');
¢ INSERT INTO hoge (hau,hoe) VALUE ("hauu","[¥Ç¡¼¥¿]");
£ UPDATE hoge SET hoe = '[¥Ç¡¼¥¿]' WHERE hau = 'hauu';
¤ UPDATE hoge SET hoe = "[¥Ç¡¼¥¿]" WHERE hau = "hauu";
¤³¤Î¾ì¹ç¤â£³¤ÈƱÍͤË[¥Ç¡¼¥¿]¤Ëʸ»úÎó¤Î¶èÀÚ¤êʸ»ú¡Ö"¡×¡¢¡Ö'¡×¤¬´Þ¤Þ¤ì¤Æ¤¤¤¿¤È¤¡¢Í½Áۤ⤷¤Ê¤¤Æ°¤¤ò¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
Î㤨¤Ð¡¢£¤Î¾ì¹ç¤Ë[¥Ç¡¼¥¿]¤¬¡Öaaa';--¡×¤Ç¤¢¤Ã¤¿¤È¤¹¤ë¤È¡¢°Ê²¼¤Î¤è¤¦¤ÊSQLʸ¤Ë¤Ê¤ê¤Þ¤¹¡£
£' UPDATE hoge SET hoe = 'aaa';--' WHERE hau = 'hauu';
SQLʸ¤Ç¤Ï¡Ö--¡×°Ê¹ß¤Ï¥³¥á¥ó¥È¤È¤·¤Æ¤ß¤Ê¤µ¤ì¤ë¤¿¤á¡¢£'¤Ïhoge¥Æ¡¼¥Ö¥ë¤ÎÁ´¤Æ¤Î¹àÌÜhoe¤¬¡Öaaa¡×¤ËÊÑ´¹¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¡Ö"¡×¡¢¡Ö'¡×¤À¤±¤Ç¤Ê¤¯¡¢¡Ö--¡×¤Ê¤É¤âµ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
£µ¡¥¥Ç¡¼¥¿¤¬Stored Procedure¤Î°ú¿ô¤Ç¤¢¤ë¾ì¹ç
½èÍý¤ò¾¯¤·¤Ç¤âÁ᤯¤¹¤ë¡¢Ê£¿ô¤ÎSQLʸ¤¬°ìÅ٤˻Ȥï¤ì¤ëÅù¤Î¾ì¹ç¡¢Stored Procedure¤ò»È¤¦¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢°Ê²¼¤Î¤è¤¦¤ÊSQLʸ¤¬ÍѤ¤¤é¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ exec hoehoe [¥Ç¡¼¥¿];
¢ exec henyo "[¥Ç¡¼¥¿]";
£ exec punyu '[¥Ç¡¼¥¿]';
¤³¤ì¤é¤â£´¤Þ¤Ç¤ÈƱÍͤËŬÀڤʥÁ¥§¥Ã¥¯¤ä¥¨¥¹¥±¡¼¥×½èÍý¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¤Èͽ´ü¤·¤Ê¤¤SQLʸ¤ò¼Â¹Ô¤µ¤ì¤Æ¤·¤Þ¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢¡¤Î[¥Ç¡¼¥¿]¤¬¡Ö1;delete from hoge;¡×¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢°Ê²¼¤Î¤è¤¦¤ÊSQLʸ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡' exec hoehoe 1;delete from hoge;
¤³¤Î·ë²Ì¡¢Stored Procedure¡Öhoehoe¡×¤¬¼Â¹Ô¤µ¤ì¤¿¸å¡¢¥Æ¡¼¥Ö¥ëhoge¤Î¥ì¥³¡¼¥É¤¬Á´¤Æºï½ü¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ë¡¢Å¬Àڤ˥ǡ¼¥¿¤Î¿ôÃͤ«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢ºîÀ®¼Ô¤¬°Õ¿Þ¤·¤Ê¤¤SQLʸ¤ò¼Â¹Ô¤·¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î°Ù¡¢¥Ç¡¼¥¿¤Î¥Á¥§¥Ã¥¯¤ä¥¨¥¹¥±¡¼¥×½èÍý¤ò¤·¤Æ¤«¤éSQLʸ¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬É¬¿Ü¤È¤Ê¤ê¤Þ¤¹¡£Ã¢¤·¡¢´í¸±¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ä¥¨¥¹¥±¡¼¥×½èÍý¤ÎºÝ¤Ë´í¸±¤Êʸ»ú¤ò½ü³°Ëô¤Ï̵³²²½¤¹¤ë¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Ç¹Ô¤Ã¤Æ¤¤¤ë¤È¡¢´í¸±¤Êʸ»ú¤Î¥Á¥§¥Ã¥¯¹àÌܤËϳ¤ì¤¬¤¢¤Ã¤¿¾ì¹ç¡¢ºîÀ®¼Ô¤¬°Õ¿Þ¤·¤Ê¤¤SQLʸ¤ò¼Â¹Ô¤·¤Æ¤·¤Þ¤¦²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£¤½¤³¤Ç¡¢²Äǽ¤Ê¸Â¤ê¡¢»ÈÍѤǤ¤ëʸ»ú°Ê³°¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¡ÊÎ㤨¤Ð¡¢¿ôÃ͹àÌܤΥǡ¼¥¿¤Ë±Ñʸ»ú¤ä¡Ö+¡×¡¢¡Ö-¡×¤È¤¤¤Ã¤¿µ¹æ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ä¡¢Ê¸»ú¹àÌܤDZÑʸ»ú¤·¤«ÆþÎϤµ¤ì¤Ê¤¤¤Èʬ¤«¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ëµ¹æ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤³¤ÈÅù¡Ë¤ò³Îǧ¤¹¤ë¤è¤¦¤Ë¤·¤¿¤Û¤¦¤¬¤è¤ê°ÂÁ´¤Ë¤Ê¤ê¤Þ¤¹¡£
SQLʸ¤Ç´í¸±¤Êʸ»úÎó
¶ñÂÎŪ¤ËÌäÂ꤬¤¢¤ëʸ»úÎó¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£Ã¢¤·¤³¤ì¤é¤Ï¤¢¤¯¤Þ¤Ç´ðËÜŪ¤Ê¤â¤Î¤Ç¤¢¤ê¡¢³ÆRDBMS¤Ë°Í¸¤¹¤ë´í¸±¤Êʸ»úÎó¤¬Â¸ºß¤·¤Þ¤¹¡£
|
´í¸±¤Êʸ»úÎó |
ʸ»úÎó¤Î»ý¤Ä°ÕÌ£ |
|
" |
ʸ»úÎó¤Î¶èÀÚ¤ê |
|
' |
ʸ»úÎó¤Î¶èÀÚ¤ê |
|
+ |
¿ôÃͱ黻 |
|
- |
¿ôÃͱ黻 |
|
* |
¿ôÃͱ黻 |
|
/ |
¿ôÃͱ黻 |
|
% |
¥ï¥¤¥ë¥É¥«¡¼¥É |
|
; |
SQLʸ¤Î¶èÀÚ¤ê |
|
-- |
¥³¥á¥ó¥È¤Î³«»Ï |
|
( ) |
INSERTʸ¤ÇÃͤÎÂåÆþ¤Ê¤É¤Ë»ÈÍÑ |
|
\ |
¥¨¥¹¥±¡¼¥×ʸ»ú¤È¤·¤Æ»ÈÍÑ |