Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

¼¼Çɺ;÷ÇÏ£º·À·¶SQL×¢Èë¹¥»÷

¡¾Ô­ÎĵØÖ·¡¿Tip/Trick: Guard Against SQL Injection Attacks
¡¾Ô­ÎÄ·¢±íÈÕÆÚ¡¿ Saturday, September 30, 2006 9:11 AM
SQL×¢Èë¹¥»÷ÊǷdz£ÁîÈËÌÖÑáµÄ°²È«Â©¶´£¬ÊÇËùÓеÄweb¿ª·¢ÈËÔ±£¬²»¹ÜÊÇʲôƽ̨£¬¼¼Êõ£¬»¹ÊÇÊý¾Ý²ã£¬ÐèҪȷÐÅËûÃÇÀí½âºÍ·ÀÖ¹µÄ¶«Î÷¡£²»ÐÒµÄÊÇ£¬¿ª·¢ÈËÔ±ÍùÍù²»¼¯Öл¨µãʱ¼äÔÚÕâÉÏÃ棬ÒÔÖÁËûÃǵÄÓ¦Ó㬸üÔã¸âµÄÊÇ£¬ËûÃǵĿͻ§¼«ÆäÈÝÒ×Êܵ½¹¥»÷¡£
Michael Sutton ×î½ü·¢±íÁËһƪ·Ç³£·¢ÈËÉîÊ¡µÄÌû×Ó£¬½²ÊöÔÚ¹«¹²ÍøÉÏÕâÎÊÌâÊǶàôµØÆձ顣ËûÓÃGoogleµÄSearch API½¨ÁËÒ»¸öC#µÄ¿Í»§¶Ë³ÌÐò£¬Ñ°ÕÒÄÇЩÒ×ÊÜSQL ×¢Èë¹¥»÷µÄÍøÕ¾¡£Æä²½ÖèºÜ¼òµ¥£º
Ñ°ÕÒÄÇЩ´ø²éѯ×Ö·û´®µÄÍøÕ¾(ÀýÈ磬²éѯÄÇЩÔÚURLÀï´øÓÐ "id=" µÄURL)
¸øÕâЩȷ¶¨Îª¶¯Ì¬µÄÍøÕ¾·¢ËÍÒ»¸öÇëÇ󣬸ıäÆäÖеÄid=Óï¾ä£¬´øÒ»¸ö¶îÍâµÄµ¥ÒýºÅ£¬À´ÊÔͼȡÏûÆäÖеÄSQLÓï¾ä(ÀýÈ磬Èç id=6' )
·ÖÎö·µ»ØµÄ»Ø¸´£¬ÔÚÆäÖвéÕÒÏó“SQL” ºÍ“query”ÕâÑùµÄ´Ê£¬ÕâÍùÍù±íʾӦÓ÷µ»ØÁËÏêϸµÄ´íÎóÏûÏ¢(Õâ±¾ÉíÒ²ÊǺÜÔã¸âµÄ)
¼ì²é´íÎóÏûÏ¢ÊÇ·ñ±íʾ·¢Ë͵½SQL·þÎñÆ÷µÄ²ÎÊýûÓб»ÕýÈ·¼ÓÂë(encoded)£¬Èç¹ûÈç´Ë£¬ÄÇô±íʾ¿É¶Ô¸ÃÍøÕ¾½øÐÐSQL×¢Èë¹¥»÷
¶Ôͨ¹ýGoogleËÑÑ°ÕÒµ½µÄ1000¸öÍøÕ¾µÄËæ»úÈ¡Ñù²âÊÔ£¬Ëû¼ì²âµ½ÆäÖеÄ11.3%ÓÐÒ×ÊÜSQL×¢Èë¹¥»÷µÄ¿ÉÄÜ¡£Õâ·Ç³££¬·Ç³£µØ¿ÉÅ¡£ÕâÒâζןڿͿÉÒÔÔ¶³ÌÀûÓÃÄÇЩӦÓÃÀïµÄÊý¾Ý£¬»ñÈ¡ÈκÎûÓÐhashed»ò¼ÓÃܵÄÃÜÂë»òÐÅÓÿ¨Êý¾Ý£¬ÉõÖÁÓÐÒÔ¹ÜÀíÔ±Éí·ÝµÇ½½øÕâЩӦÓõĿÉÄÜ¡£Õâ²»½ö¶Ô¿ª·¢ÍøÕ¾µÄ¿ª·¢ÈËÔ±À´ËµºÜÔã¸â£¬¶øÇÒ¶ÔʹÓÃÍøÕ¾µÄÏû·ÑÕß»òÓû§À´Ëµ¸üÔã¸â£¬ÒòΪËûÃǸøÍøÕ¾ÌṩÁËÊý¾Ý£¬Ïë×ÅÍøÕ¾ÊÇ°²È«µÄÄØ¡£
ÄÇôSQL×¢Èë¹¥»÷µ½µ×ÊÇʲôÍæÒ⣿
Óм¸ÖÖÇéÐÎʹµÃSQL×¢Èë¹¥»÷³ÉΪ¿ÉÄÜ¡£×î³£¼ûµÄÔ­ÒòÊÇ£¬Ä㶯̬µØ¹¹ÔìÁËSQLÓï¾ä£¬È´Ã»ÓÐʹÓÃÕýÈ·µØ¼ÓÁËÂë(encoded)µÄ²ÎÊý¡£Æ©È磬¿¼ÂÇÕâ¸öSQL²éѯµÄ±àÂ룬ÆäÄ¿µÄÊǸù¾ÝÓɲéѯ×Ö·û´®ÌṩµÄÉç»á±£ÏÕºÅÂë(social security number)À´²éѯ×÷Õß(Authors)£º
Dim SSN as String
Dim SqlQuery as String
SSN = Request.QueryString("SSN")
SqlQuery = "SELECT au_lname, au_fname from authors WHERE au_id = '" + SSN + "'"
Èç¹ûÄãÓÐÏóÉÏÃæÕâ¸öƬ¶ÏÒ»ÑùµÄSQL±àÂ룬ÄÇôÄãµÄÕû¸öÊý¾Ý¿âºÍÓ¦ÓÿÉÒÔÔ¶³ÌµØ±»ºÚµô¡£Ôõô»áÄØ£¿ÔÚÆÕͨÇéÐÎÏ£¬Óû§»áʹÓÃÒ»¸öÉç»á±£ÏÕºÅÂëÀ´·ÃÎÊÕâ¸öÍøÕ¾£¬±àÂëÊÇÏó


Ïà¹ØÎĵµ£º

SQL²éѯʱ¼ä·µ»Ø¸ñʽ

Select CONVERT(varchar(100), GETDATE(), 23)£»
·µ»ØÐÎʽ£º2008-11-29
Select CONVERT(varchar(100), GETDATE(), 102)  
·µ»ØÐÎʽ£º2008.11.29
Select CONVERT(varchar(100), GETDATE(), 101)
·µ»ØÐÎʽ£º11/29/2008
¸ü¶àÏêÇéÇë²Î¼ûÈçÏÂÁÐ±í£º
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 ......

SQL·ÖÒ³ ÀûÓÃID´óÓÚ¶àÉÙºÍSELECT TOP·ÖÒ³

Óï¾äÐÎʽ£º¡¡ SELECTTOP10*
fromTestTable
WHERE(ID>
¡¡¡¡¡¡¡¡¡¡(SELECTMAX(id)
¡¡¡¡¡¡¡¡from(SELECTTOP20id
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡fromTestTable
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ORDERBYid)AST))
ORDERBYID
SELECTTOPÒ³´óС*
fromTestTable
WHERE(ID>
¡¡¡¡¡¡¡¡¡¡(SELECTMAX(id)
¡¡¡¡¡¡¡¡from(SELECTTOPÒ³´óС*Ò³Êýid
¡¡¡¡¡ ......

sql³£ÓÃÓï¾ä

ÔÚSQLSERVER£¬¼òµ¥µÄ×éºÏsp_spaceusedºÍsp_MSforeachtableÕâÁ½¸ö´æ´¢¹ý³Ì£¬¿ÉÒÔ·½±ãµÄͳ¼Æ³öÓû§Êý¾Ý±íµÄ´óС£¬°üÀ¨¼Ç¼×ÜÊýºÍ¿Õ¼äÕ¼ÓÃÇé¿ö£¬·Ç³£ÊµÓã¬ÔÚSqlServer2KºÍSqlServer2005Öж¼²âÊÔͨ¹ý¡£
/*
1. exec sp_spaceused '±íÃû'            £¨SQLͳ¼ÆÊý¾Ý£¬´óÁ¿ÊÂÎñ²Ù×÷ºó¿É ......

SQL»ù±¾Óï¾ä

ÕÆÎÕSQLËÄÌõ×î»ù±¾µÄÊý¾Ý²Ù×÷Óï¾ä£ºInsert£¬Select£¬UpdateºÍDelete¡£
¡¡¡¡ Á·ÕÆÎÕSQLÊÇÊý¾Ý¿âÓû§µÄ±¦¹ó²Æ ¸»¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Òýµ¼ÄãÕÆÎÕËÄÌõ×î»ù±¾µÄÊý¾Ý²Ù×÷Óï¾ä—SQLµÄºËÐŦÄÜ—À´ÒÀ´Î½éÉܱȽϲÙ×÷·û¡¢Ñ¡Ôñ¶ÏÑÔÒÔ¼°ÈýÖµÂß¼­¡£µ±ÄãÍê³ÉÕâЩѧϰºó£¬ÏÔÈ»ÄãÒѾ­¿ªÊ¼ËãÊǾ«Í¨SQLÁË¡£
¡¡¡¡ÔÚÎÒÃÇ¿ªÊ¼Ö®Ç°£¬ÏÈ ......

SQL²éѯÓï¾äʹÓÃ

Ò»¡¢¼òµ¥²éѯ
¡¡¡¡ ¼òµ¥µÄTransact-SQL²éѯֻ°üÀ¨Ñ¡ÔñÁÐ±í¡¢from×Ó¾äºÍWHERE×Ӿ䡣
ËüÃÇ·Ö±ð˵Ã÷Ëù²éѯÁС¢²éѯµÄ
±í»òÊÓͼ¡¢ÒÔ¼°ËÑË÷Ìõ¼þµÈ¡£
ÀýÈ磬ÏÂÃæµÄÓï¾ä²éѯtesttable±íÖÐÐÕÃûΪ“ÕÅÈý”µÄnickname×ֶκÍemail×ֶΡ£
SELECT nickname,email
from testtable WHERE name='ÕÅÈý'
(Ò»)Ñ¡ÔñÁбí
¡ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ