Ò».CSRFÊÇʲô£¿
CSRF£¨Cross-site request forgery£©£¬ÖÐÎÄÃû³Æ£º¿çÕ¾ÇëÇóαÔ죬Ҳ±»³ÆÎª£ºone
click attack/session riding£¬ËõдΪ£ºCSRF/XSRF¡£
¶þ.CSRF¿ÉÒÔ×öʲô£¿
ÄãÕâ¿ÉÒÔÕâôÀí½âCSRF¹¥»÷£º¹¥»÷ÕßµÁÓÃÁËÄãµÄÉí·Ý£¬ÒÔÄãµÄÃûÒå·¢ËͶñÒâÇëÇó¡£CSRFÄܹ»×öµÄÊÂÇé°üÀ¨£ºÒÔÄãÃûÒå·¢ËÍÓʼþ£¬·¢ÏûÏ¢£¬µÁÈ¡ÄãµÄÕ˺ţ¬ÉõÖÁÓÚ**ÉÌÆ·£¬ÐéÄâ»õ±ÒתÕË......Ôì³ÉµÄÎÊÌâ°üÀ¨£º¸öÈËÒþ˽й¶ÒÔ¼°²Æ²ú°²È«¡£
Èý.CSRF©¶´ÏÖ×´
CSRFÕâÖÖ¹¥»÷·½Ê½ÔÚ2000ÄêÒѾ±»¹úÍâµÄ°²È«ÈËÔ±Ìá³ö£¬µ«ÔÚ¹úÄÚ£¬Ö±µ½06Äê²Å¿ªÊ¼±»¹Ø×¢£¬08Ä꣬¹úÄÚÍâµÄ¶à¸ö´óÐÍ**ºÍ½»»¥ÍøÕ¾·Ö±ð±¬³öCSRF©¶´£¬È磺NYTimes.com£¨Å¦Ô¼Ê±±¨£©¡¢Metafilter£¨Ò»¸ö´óÐ͵ÄBLOGÍøÕ¾£©£¬YouTubeºÍ°Ù¶ÈHI......¶øÏÖÔÚ£¬»¥ÁªÍøÉϵÄÐí¶àÕ¾µãÈԶԴ˺ÁÎÞ·À±¸£¬ÒÔÖÁÓÚ°²È«Òµ½ç³ÆCSRFΪ¡°³Á˯µÄ¾ÞÈË¡±¡£
ËÄ.CSRFµÄÔÀí
ÏÂͼ¼òµ¥²ûÊöÁËCSRF¹¥»÷µÄ˼Ï룺

´ÓÉÏͼ¿ÉÒÔ¿´³ö£¬ÒªÍê³ÉÒ»´ÎCSRF¹¥»÷£¬Êܺ¦Õß±ØÐëÒÀ´ÎÍê³ÉÁ½¸ö²½Ö裺
1.µÇ¼ÊÜÐÅÈÎÍøÕ¾A£¬²¢ÔÚ±¾µØÉú³ÉCookie¡£
2.ÔÚ²»µÇ³öAµÄÇé¿öÏ£¬·ÃÎÊΣÏÕÍøÕ¾B¡£
¿´µ½ÕâÀÄãÒ²Ðí»á˵£º¡°Èç¹ûÎÒ²»Âú×ãÒÔÉÏÁ½¸öÌõ¼þÖеÄÒ»¸ö£¬ÎҾͲ»»áÊܵ½CSRFµÄ¹¥»÷¡±¡£Êǵģ¬È·ÊµÈç´Ë£¬µ«Äã²»Äܱ£Ö¤ÒÔÏÂÇé¿ö²»»á·¢Éú£º
1.Äã²»Äܱ£Ö¤ÄãµÇ¼ÁËÒ»¸öÍøÕ¾ºó£¬²»ÔÙ´ò¿ªÒ»¸ötabÒ³Ãæ²¢·ÃÎÊÁíÍâµÄÍøÕ¾¡£
2.Äã²»Äܱ£Ö¤Äã¹Ø±Õä¯ÀÀÆ÷Á˺ó£¬Äã±¾µØµÄCookieÁ¢¿Ì¹ýÆÚ£¬ÄãÉϴεĻỰÒѾ½áÊø¡££¨ÊÂʵÉÏ£¬¹Ø±Õä¯ÀÀÆ÷²»ÄܽáÊøÒ»¸ö»á»°£¬µ«´ó¶àÊýÈ˶¼»á´íÎóµÄÈÏΪ¹Ø±Õä¯ÀÀÆ÷¾ÍµÈÓÚÍ˳öµÇ¼/½áÊø»á»°ÁË......£©
3.ÉÏͼÖÐËùνµÄ¹¥»÷ÍøÕ¾£¬¿ÉÄÜÊÇÒ»¸ö´æÔÚÆäËû©¶´µÄ¿ÉÐÅÈεľ³£±»ÈË·ÃÎʵÄÍøÕ¾¡£
ÉÏÃæ´ó¸ÅµØ½²ÁËÒ»ÏÂCSRF¹¥»÷µÄ˼Ï룬ÏÂÃæÎÒ½«Óü¸¸öÀý×ÓÏêϸ˵˵¾ßÌåµÄCSRF¹¥»÷£¬ÕâÀïÎÒÒÔÒ»¸öÒøÐÐתÕ˵IJÙ×÷×÷ΪÀý×Ó£¨½ö½öÊÇÀý×Ó£¬ÕæÊµµÄÒøÐÐÍøÕ¾Ã»Õâôɵ:>£©
ʾÀý1£º
ÒøÐÐÍøÕ¾A£¬ËüÒÔGETÇëÇóÀ´Íê³ÉÒøÐÐתÕ˵IJÙ×÷£¬È磺http://www.mybank.com/Transfer.php?toBankId=11&money=1000
ΣÏÕÍøÕ¾B£¬ËüÀïÃæÓÐÒ»¶ÎHTMLµÄ´úÂëÈçÏ£º
<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> |
Ê×ÏÈ£¬ÄãµÇ¼ÁËÒøÐÐÍøÕ¾A£¬È»ºó·ÃÎÊΣÏÕÍøÕ¾B£¬àÞ£¬ÕâʱÄã»á·¢ÏÖÄãµÄÒøÐÐÕË»§ÉÙÁË1000¿é......
Ϊʲô»áÕâÑùÄØ£¿ÔÒòÊÇÒøÐÐÍøÕ¾AÎ¥·´ÁËHTTP¹æ·¶£¬Ê¹ÓÃGETÇëÇó¸üÐÂ×ÊÔ´¡£ÔÚ·ÃÎÊΣÏÕÍøÕ¾BµÄ֮ǰ£¬ÄãÒѾµÇ¼ÁËÒøÐÐÍøÕ¾A£¬¶øBÖеÄ<img>ÒÔGETµÄ·½Ê½ÇëÇóµÚÈý·½×ÊÔ´£¨ÕâÀïµÄµÚÈý·½¾ÍÊÇÖ¸ÒøÐÐÍøÕ¾ÁË£¬Ô±¾ÕâÊÇÒ»¸öºÏ·¨µÄÇëÇ󣬵«ÕâÀï±»²»·¨·Ö×ÓÀûÓÃÁË£©£¬ËùÒÔÄãµÄä¯ÀÀÆ÷»á´øÉÏÄãµÄÒøÐÐÍøÕ¾AµÄCookie·¢³öGetÇëÇó£¬È¥»ñÈ¡×ÊÔ´¡°http://www.mybank.com/Transfer.php?toBankId=11&money=1000¡±£¬½á¹ûÒøÐÐÍøÕ¾·þÎñÆ÷ÊÕµ½ÇëÇóºó£¬ÈÏΪÕâÊÇÒ»¸ö¸üÐÂ×ÊÔ´²Ù×÷£¨×ªÕ˲Ù×÷£©£¬ËùÒÔ¾ÍÁ¢¿Ì½øÐÐתÕ˲Ù×÷......
ʾÀý2£º
ΪÁ˶žøÉÏÃæµÄÎÊÌâ£¬ÒøÐоö¶¨¸ÄÓÃPOSTÇëÇóÍê³ÉתÕ˲Ù×÷¡£
ÒøÐÐÍøÕ¾AµÄWEB±íµ¥ÈçÏ£º
<form action="Transfer.php" method="POST"> ¡¡¡¡¡¡¡¡<p>ToBankId: <input type="text" name="toBankId" /></p> ¡¡¡¡¡¡¡¡<p>Money: <input type="text" name="money" /></p> ¡¡¡¡¡¡¡¡<p><input type="submit" value="Transfer" /></p> ¡¡¡¡</form> |
ºǫ́´¦ÀíÒ³ÃæTransfer.phpÈçÏ£º
<?php ¡¡¡¡¡¡¡¡session_start(); ¡¡¡¡¡¡¡¡if (isset($_REQUEST['toBankId'] &&¡¡isset($_REQUEST['money'])) ¡¡¡¡¡¡¡¡{ ¡¡¡¡¡¡¡¡ buy_stocks($_REQUEST['toBankId'],¡¡$_REQUEST['money']); ¡¡¡¡¡¡¡¡} ¡¡¡¡?> |
ΣÏÕÍøÕ¾B£¬ÈÔȻֻÊǰüº¬ÄǾäHTML´úÂ룺
<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> |
ºÍʾÀý1ÖеIJÙ×÷Ò»Ñù£¬ÄãÊ×ÏȵǼÁËÒøÐÐÍøÕ¾A£¬È»ºó·ÃÎÊΣÏÕÍøÕ¾B£¬½á¹û.....ºÍʾÀý1Ò»Ñù£¬ÄãÔÙ´ÎûÁË1000¿é¡«T_T£¬Õâ´ÎʹʵÄÔÒòÊÇ£ºÒøÐкǫ́ʹÓÃÁË$_REQUESTÈ¥»ñÈ¡ÇëÇóµÄÊý¾Ý£¬¶ø$_REQUEST¼È¿ÉÒÔ»ñÈ¡GETÇëÇóµÄÊý¾Ý£¬Ò²¿ÉÒÔ»ñÈ¡POSTÇëÇóµÄÊý¾Ý£¬Õâ¾ÍÔì³ÉÁËÔÚºǫ́´¦Àí³ÌÐòÎÞ·¨Çø·ÖÕâµ½µ×ÊÇGETÇëÇóµÄÊý¾Ý»¹ÊÇPOSTÇëÇóµÄÊý¾Ý¡£ÔÚPHPÖУ¬¿ÉÒÔʹÓÃ$_GETºÍ$_POST·Ö±ð»ñÈ¡GETÇëÇóºÍPOSTÇëÇóµÄÊý¾Ý¡£ÔÚJAVAÖУ¬ÓÃÓÚ»ñÈ¡ÇëÇóÊý¾ÝrequestÒ»Ñù´æÔÚ²»ÄÜÇø·ÖGETÇëÇóÊý¾ÝºÍPOSTÊý¾ÝµÄÎÊÌâ¡£
ʾÀý3£º
¾¹ýÇ°Ãæ2¸ö²ÒÍ´µÄ½Ìѵ£¬ÒøÐоö¶¨°Ñ»ñÈ¡ÇëÇóÊý¾ÝµÄ·½·¨Ò²¸ÄÁË£¬¸ÄÓÃ$_POST£¬Ö»»ñÈ¡POSTÇëÇóµÄÊý¾Ý£¬ºǫ́´¦ÀíÒ³ÃæTransfer.php´úÂëÈçÏ£º
<?php ¡¡¡¡¡¡¡¡session_start(); ¡¡¡¡¡¡¡¡if (isset($_POST['toBankId'] &&¡¡isset($_POST['money'])) ¡¡¡¡¡¡¡¡{ ¡¡¡¡¡¡¡¡ buy_stocks($_POST['toBankId'],¡¡$_POST['money']); ¡¡¡¡¡¡¡¡} ¡¡¡¡?> |
È»¶ø£¬Î£ÏÕÍøÕ¾BÓëʱ¾ã½ø£¬Ëü¸ÄÁËһϴúÂ룺
<html> ¡¡¡¡<head> ¡¡¡¡¡¡¡¡<script type="text/javascript"> ¡¡¡¡¡¡¡¡¡¡¡¡function steal() ¡¡¡¡¡¡¡¡¡¡¡¡{ ¡¡¡¡¡¡¡¡ iframe = document.frames["steal"]; ¡¡¡¡ ¡¡¡¡ iframe.document.Submit("transfer"); ¡¡¡¡¡¡¡¡¡¡¡¡} ¡¡¡¡¡¡¡¡</script> ¡¡¡¡</head>
<body onload="steal()">
¡¡¡¡¡¡¡¡<iframe name="steal" display="none">
¡¡¡¡¡¡¡¡¡¡¡¡<form method="POST" name="transfer"¡¡action="http://www.myBank.com/Transfer.php">
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡<input type="hidden" name="toBankId"
value="11">
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡<input type="hidden" name="money"
value="1000">
¡¡¡¡¡¡¡¡¡¡¡¡</form>
¡¡¡¡¡¡¡¡</iframe>
¡¡¡¡</body>
</html> |
Èç¹ûÓû§ÈÔÊǼÌÐøÉÏÃæµÄ²Ù×÷£¬ºÜ²»ÐÒ£¬½á¹û½«»áÊÇÔٴβ»¼û1000¿é......ÒòΪÕâÀïΣÏÕÍøÕ¾B°µµØÀï·¢ËÍÁËPOSTÇëÇóµ½ÒøÐÐ!
×ܽáÒ»ÏÂÉÏÃæ3¸öÀý×Ó£¬CSRFÖ÷ÒªµÄ¹¥»÷ģʽ»ù±¾ÉÏÊÇÒÔÉϵÄ3ÖÖ£¬ÆäÖÐÒÔµÚ1,2ÖÖ×îΪÑÏÖØ£¬ÒòΪ´¥·¢Ìõ¼þºÜ¼òµ¥£¬Ò»¸ö<img>¾Í¿ÉÒÔÁË£¬¶øµÚ3ÖֱȽÏÂé·³£¬ÐèҪʹÓÃJavaScript£¬ËùÒÔʹÓõĻú»á»á±ÈÇ°ÃæµÄÉٺܶ࣬µ«ÎÞÂÛÊÇÄÄÖÖÇé¿ö£¬Ö»Òª´¥·¢ÁËCSRF¹¥»÷£¬ºó¹û¶¼ÓпÉÄܺÜÑÏÖØ¡£
Àí½âÉÏÃæµÄ3ÖÖ¹¥»÷ģʽ£¬Æäʵ¿ÉÒÔ¿´³ö£¬CSRF¹¥»÷ÊÇÔ´ÓÚWEBµÄÒþʽÉí·ÝÑéÖ¤»úÖÆ£¡WEBµÄÉí·ÝÑéÖ¤»úÖÆËäÈ»¿ÉÒÔ±£Ö¤Ò»¸öÇëÇóÊÇÀ´×ÔÓÚij¸öÓû§µÄä¯ÀÀÆ÷£¬µ«È´ÎÞ·¨±£Ö¤¸ÃÇëÇóÊÇÓû§Åú×¼·¢Ë͵ģ¡
Îå.CSRFµÄ·ÀÓù
ÎÒ×ܽáÁËһϿ´µ½µÄ×ÊÁÏ£¬CSRFµÄ·ÀÓù¿ÉÒÔ´Ó·þÎñ¶ËºÍ¿Í»§¶ËÁ½·½Ãæ×ÅÊÖ£¬·ÀÓùЧ¹ûÊÇ´Ó·þÎñ¶Ë×ÅÊÖЧ¹û±È½ÏºÃ£¬ÏÖÔÚÒ»°ãµÄCSRF·ÀÓùÒ²¶¼ÔÚ·þÎñ¶Ë½øÐС£
1.·þÎñ¶Ë½øÐÐCSRF·ÀÓù
·þÎñ¶ËµÄCSRF·½Ê½·½·¨ºÜ¶àÑù£¬µ«×ܵÄ˼Ïë¶¼ÊÇÒ»Öµģ¬¾ÍÊÇÔÚ¿Í»§¶ËÒ³ÃæÔö¼ÓÎ±Ëæ»úÊý¡£
(1).Cookie Hashing(ËùÓÐ±íµ¥¶¼°üº¬Í¬Ò»¸öÎ±Ëæ»úÖµ)£º
Õâ¿ÉÄÜÊÇ×î¼òµ¥µÄ½â¾ö·½°¸ÁË£¬ÒòΪ¹¥»÷Õß²»ÄÜ»ñµÃµÚÈý·½µÄCookie(ÀíÂÛÉÏ)£¬ËùÒÔ±íµ¥ÖеÄÊý¾ÝÒ²¾Í¹¹Ôìʧ°ÜÁË:>
<?php ¡¡¡¡¡¡¡¡//¹¹Ôì¼ÓÃܵÄCookieÐÅÏ¢ ¡¡¡¡¡¡¡¡$value = ¡°DefenseSCRF¡±; ¡¡¡¡¡¡¡¡setcookie(¡±cookie¡±, $value, time()+3600); ¡¡¡¡?> |
ÔÚ±íµ¥ÀïÔö¼ÓHashÖµ£¬ÒÔÈÏÖ¤ÕâȷʵÊÇÓû§·¢Ë͵ÄÇëÇó¡£
<?php ¡¡¡¡¡¡¡¡$hash = md5($_COOKIE['cookie']); ¡¡¡¡?> ¡¡¡¡<form method=¡±POST¡± action=¡±transfer.php¡±> ¡¡¡¡¡¡¡¡<input type=¡±text¡± name=¡±toBankId¡±> ¡¡¡¡¡¡¡¡<input type=¡±text¡± name=¡±money¡±> ¡¡¡¡¡¡¡¡<input type=¡±hidden¡± name=¡±hash¡± value=¡±<?=$hash;?>¡±> ¡¡¡¡¡¡¡¡<input type=¡±submit¡± name=¡±submit¡± value=¡±Submit¡±> ¡¡¡¡</form> |
È»ºóÔÚ·þÎñÆ÷¶Ë½øÐÐHashÖµÑéÖ¤
<?php ¡¡¡¡ if(isset($_POST['check'])) { ¡¡¡¡ $hash = md5($_COOKIE['cookie']); ¡¡¡¡ if($_POST['check'] == $hash) { ¡¡¡¡ doJob(); ¡¡¡¡ } else { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//... ¡¡¡¡ } ¡¡¡¡ } else { ¡¡¡¡¡¡¡¡¡¡¡¡//... ¡¡¡¡ } ?> |
Õâ¸ö·½·¨¸öÈ˾õµÃÒѾ¿ÉÒԶžø99%µÄCSRF¹¥»÷ÁË£¬ÄÇ»¹ÓÐ1%ÄØ....ÓÉÓÚÓû§µÄCookieºÜÈÝÒ×ÓÉÓÚÍøÕ¾µÄXSS©¶´¶ø±»µÁÈ¡£¬Õâ¾ÍÁíÍâµÄ1%¡£Ò»°ãµÄ¹¥»÷Õß¿´µ½ÓÐÐèÒªËãHashÖµ£¬»ù±¾¶¼»á·ÅÆúÁË£¬Ä³Ð©³ýÍ⣬ËùÒÔÈç¹ûÐèÒª100%µÄ¶Å¾ø£¬Õâ¸ö²»ÊÇ×îºÃµÄ·½·¨¡£
(2).ÑéÖ¤Âë
Õâ¸ö·½°¸µÄ˼·ÊÇ£ºÃ¿´ÎµÄÓû§Ìá½»¶¼ÐèÒªÓû§ÔÚ±íµ¥ÖÐÌîдһ¸öͼƬÉϵÄËæ»ú×Ö·û´®£¬¶ò....Õâ¸ö·½°¸¿ÉÒÔÍêÈ«½â¾öCSRF£¬µ«¸öÈ˾õµÃÔÚÒ×ÓÃÐÔ·½ÃæËƺõ²»ÊÇÌ«ºÃ£¬»¹ÓÐÌýÎÅÊÇÑéÖ¤ÂëͼƬµÄʹÓÃÉæ¼°ÁËÒ»¸ö±»³ÆÎªMHTMLµÄBug£¬¿ÉÄÜÔÚijЩ°æ±¾µÄ΢ÈíIEÖÐÊÜÓ°Ïì¡£
(3).One-Time Tokens(²»Í¬µÄ±íµ¥°üº¬Ò»¸ö²»Í¬µÄÎ±Ëæ»úÖµ)
ÔÚʵÏÖOne-Time Tokensʱ£¬ÐèҪעÒâÒ»µã£º¾ÍÊÇ¡°²¢ÐлỰµÄ¼æÈÝ¡±¡£Èç¹ûÓû§ÔÚÒ»¸öÕ¾µãÉÏͬʱ´ò¿ªÁËÁ½¸ö²»Í¬µÄ±íµ¥£¬CSRF±£»¤´ëÊ©²»Ó¦¸ÃÓ°Ïìµ½Ëû¶ÔÈÎºÎ±íµ¥µÄÌá½»¡£¿¼ÂÇÒ»ÏÂÈç¹ûÿ´Î±íµ¥±»×°ÈëʱվµãÉú³ÉÒ»¸öÎ±Ëæ»úÖµÀ´¸²¸ÇÒÔǰµÄÎ±Ëæ»úÖµ½«»á·¢ÉúʲôÇé¿ö£ºÓû§Ö»Äܳɹ¦µØÌá½»Ëû×îºó´ò¿ªµÄ±íµ¥£¬ÒòΪËùÓÐÆäËûµÄ±íµ¥¶¼º¬ÓзǷ¨µÄÎ±Ëæ»úÖµ¡£±ØÐëСÐIJÙ×÷ÒÔÈ·±£CSRF±£»¤´ëÊ©²»»áÓ°ÏìÑ¡ÏʽµÄä¯ÀÀ»òÕßÀûÓöà¸öä¯ÀÀÆ÷´°¿Úä¯ÀÀÒ»¸öÕ¾µã¡£
ÒÔÏÂÎÒµÄʵÏÖ:
1).ÏÈÊÇÁîÅÆÉú³Éº¯Êý(gen_token())£º
<?php function gen_token() { ¡¡¡¡¡¡¡¡//ÕâÀïÎÒÊÇ̰·½±ã£¬Êµ¼ÊÉϵ¥Ê¹ÓÃRand()µÃ³öµÄËæ»úÊý×÷ΪÁîÅÆ£¬Ò²ÊDz»°²È«µÄ¡£ ¡¡¡¡¡¡¡¡//Õâ¸ö¿ÉÒԲο¼ÎÒдµÄFindbugs±Ê¼ÇÖеġ¶Random object created and used only once¡· $token = md5(uniqid(rand(), true)); return $token; } |
2).È»ºóÊÇSessionÁîÅÆÉú³Éº¯Êý(gen_stoken())£º
<?php ¡¡¡¡function gen_stoken() { ¡¡¡¡¡¡¡¡¡¡¡¡$pToken = ""; ¡¡¡¡¡¡¡¡¡¡¡¡if($_SESSION[STOKEN_NAME] == $pToken){ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ûÓÐÖµ£¬¸³ÐÂÖµ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡$_SESSION[STOKEN_NAME] = gen_token(); ¡¡¡¡¡¡¡¡¡¡¡¡} ¡¡¡¡¡¡¡¡¡¡¡¡else{ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¼ÌÐøÊ¹ÓþɵÄÖµ ¡¡¡¡¡¡¡¡¡¡¡¡} ¡¡¡¡} ?> |
3).WEB±íµ¥Éú³ÉÒþ²ØÊäÈëÓòµÄº¯Êý£º
<?php ¡¡¡¡ function gen_input() { ¡¡¡¡ gen_stoken(); ¡¡¡¡ echo ¡°<input type=\¡±hidden\¡± name=\¡±" . FTOKEN_NAME . ¡°\¡± ¡¡¡¡ value=\¡±" . $_SESSION[STOKEN_NAME] . ¡°\¡±> ¡°; ¡¡¡¡} ?> |
4).WEB±íµ¥½á¹¹£º
<?php session_start(); include(¡±functions.php¡±); ?> <form method=¡±POST¡± action=¡±transfer.php¡±> <input type=¡±text¡± name=¡±toBankId¡±> <input type=¡±text¡± name=¡±money¡±> <? gen_input(); ?> <input type=¡±submit¡± name=¡±submit¡± value=¡±Submit¡±> </FORM> |
5).·þÎñ¶ËºË¶ÔÁîÅÆ£º
Õâ¸öºÜ¼òµ¥£¬ÕâÀï¾Í²»ÔÙ†ªàÂÁË¡£
ÉÏÃæÕâ¸öÆäʵ²»ÍêÈ«·ûºÏ¡°²¢ÐлỰµÄ¼æÈÝ¡±µÄ¹æÔò£¬´ó¼Ò¿ÉÒÔÔÚ´Ë»ù´¡ÉÏÐ޸ġ£
|