APIÍþв·À»¤Êµ¼ÊÖ®ÌìÇåWebÀûÓð²È«Íø¹ØÏµÍ³
°ä²¼¹¦·ò 2018-06-25Web API ÊÇ֧ʹÓà HTTP ºÍ̸½øÐÐÍøÂçŲÓõÄAPI£¨Application Programming Interface£©£¬ÊÇÒ»¸öÀûÓÃµÄ±í²¿½Ó¿Ú¡£¶ÔÓÚÒ»¸öÀûÓ÷¨Ê½£¬ÈËÃÇͨ³£²»¹Ø×¢ÄÚ²¿½á¹¹ÊµÏÖϸ½Ú£¬Ö»¹ØÇÐ±í²¿Ö°ÄܵÄʹÓá£ÄÇôŲÓÃÀûÓ÷¨Ê½ÊµÏÖij¸öÖ°ÄܵĹ淶²½Öè¼´¿É³ÆÖ®Îª·¨Ê½µÄ API¡£
¡ôWeb API °²È«Òþ»¼¡ô
ÓÉÓÚ Web APIµÄ¿í·º±é¼°ÓëʹÓã¬Ó봫ͳµÄ Web °²È«ÎÊÌâÒ»Ñù£¬Ò²´æÔÚÃô¸ÐÐÅÏ¢±»¶ñÒâ»ñÈ¡£¬Óû§È¨ÏÞ±»¶ñÒâʹÓõÈÎÊÌâ¡£³ýÁËÆøÏóÔ¤±¨¡¢µØÀíµØÎ»µÈÕâÀ๫¹²·þÎñÐÅÏ¢µÄÌṩ£¬ÏÕЩËùÓÐµÄ API ·þÎñ¶¼´æÔÚÓû§ÈÏÖ¤¡¢È¨ÏÞ½ÚÔìµÈ£¬ÒÔ±ãÓÚ·þÎñÌṩÉ̽øÐÐÖÎÀíºÍÊÕ·Ñ¡£
½üÄêÀ´Ëæ×ÅÒÆ¶¯ÀûÓá¢ÔƶËÀûÓõı鼰£¬Web Õ¾µãÓë Web API ÅäÌ׿ª·¢µÄÇé¾°Ô½À´Ô½¶à£¬API °²È«ÎÊÌâÒ²ÊÇÓëÈÕ¾ãÔö¡£Èç¹û Web API ȱµã±»¶ñÒâÀûÓã¬Óû§ÒþÖÔ±»¹«¿ª»òÕßµÁÓã¬ÄÇô·þÎñÌṩÕß½«»áʧȥÐÅÓþ¡¢Ê§È¥Óû§£¬¿ÉÄܵ¼Ö·þÎñÌṩÕßÆÆ²úµ¹¹Ø£¬Ê¼ÖÕÎÞ·¨ÔÙ´ÎÓ®µÃÓû§µÄÐÅÀµ¡£
ÀýÈçInstagram ÔÚ2017ÄêÓÉÓÚ API ´æÔÚ bug£¬²»ÉÙÈÏÖ¤Óû§¶¼·¢ÏÖ×Ô¼ºµÄÓ×ÎÒ×ÊÁÏ£¨Ô̺¬ÓÊÏ䵨ַ¡¢µç»°ºÅÂëµÈ£©¿ÉµÈÏб»ËûÈË»ñÈ¡¡£Ê¼þ²úÉúºó£¬Instagram ¹ÌÈ»²¢Î´¶Ô·ì϶ϸ½Ú×ö¹ý¶àÚ¹ÊÍ£¬Ö»ÊǰµÊ¾·ì϶ÒѾ½¨¸´¡£Instagram ¶ÔËùÓеÄ×¢²áÓû§·¢Á˵ç×ÓÓʼþ£¬ÌáÐÑËûÃÇÌá·ÀÕâ´Î¹¥»÷£¬²¢Ó×ÐÄ¿ÉÄÜ»á³öÏֵĴ¹µö¹¥»÷£¬»¹ÓÐÄÇЩͨ¹ýÉ繤¼¿Á©£¨Óʼþ£¬¶ÌÐÅ£¬µç»°µÈ·½Ê½£©Ëù´øÀ´µÄ¹¥»÷¡£
¡ñ °²È«Òþ»¼Ò»£º
¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄ¼àÌýÓëÐá̽
Web API ºÍͨ³£µÄ Web Õ¾µãÒ»Ñù£¬Í¨¹ý HTTP ºÍ̸ÔÚ»¥ÁªÍøÉϽøÐÐÊý¾Ý´«Ê䣬ÓÉÓÚHTTPºÍ̸×ÔÉí²¢Î´ÓÐÈκμÓÃܵÄÉè¼Æ£¬Òò¶ø²»Äܱ£ÕÏͨѶ¹ý³ÌÖв»±»¼àÌý¡£Ô½À´Ô½¶àµÄ¹«¹²Wi-Fi±»ºÚ¿Í¶¢ÉÏ£¬Í¨³£ºÚ¿ÍÉè·¨ºÍÊܺ¦Óû§ÏνÓÔÚͳһ¾ÖÓòÍøÄÚ£¬Ö»Óдò¿ªÐá̽¼àÌý¹¤¾ß£¬Êܺ¦ÕßÔÚÍøÂçÖеĴ«Êä¹ýµÄÃô¸ÐÐÅÏ¢½«±»ºÚ¿Í»ñÈ¡¡£ÈôÊDZ»ÇÔÈ¡µÄÐÅÏ¢ÖÐÖ±½Óº¬ÓÐÓ×ÎÒÐÅÏ¢ºÍÃÜÂ룬ºÚ¿Í¿ÉÄÜͨ¹ýÕâ¸öÐÅÏ¢Ö±½ÓµÇ¼Êܺ¦È˵ÄÓû§£¬½øÒ»²½¿ÉÄÜÔì³ÉÐÅϢй¶»ò²Æ¸»Ëðʧ¡£Áí±íÒ»ÖÖ£¬ºÚ¿ÍÒ²¿ÉÄܽٳÖÊܺ¦ÕßÓû§µÄ»á»°£¬·þÎñÆ÷½«ÎÞ·¨·Ö±æÊܺ¦Õß»¹ÊǺڿͣ¬ºÚ¿ÍÄܹ»½øÐÐÊܺ¦ÕßȨÏÞÁìÓòÄÚµÄËùÓвÙ×÷¡£
Web API ÔÚͨѶʱʹÓÃÁË HTTPS ºÍ̸ͨѶ£¬½«¼«´ó¼ÓÇ¿»á»°µÄ°²È«ÐÔ¡£ÄÇôÊDz»ÊÇÖ»ÓÐʹÓÃÁËHTTPSºÍ̸ͨѶ¾ÍÄܱ£ÕϻỰ²»±»½Ù³Ö£¬Ãô¸ÐÐÅÏ¢²»±»»ñÈ¡ÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ¡£
2014Äê4Ô·¢×÷µÄHeartbleed°²È«·ì϶£¬µ¼Ö¹¥»÷Õß¿ÉÄÜ»ñÈ¡µ½·þÎñÆ÷Éϱ£ÁôµÄÃ÷ÎÄÐÅÏ¢¡£Áí±í£¬Ê¹Óà HTTPS¼ÓÃÜͨѶʱ£¬Ò²ÓпÉÄÜ´æÔÚÖÐÑëÈ˹¥»÷£¬Òò¶ø±ØÒª±£ÕÏʹÓÃÓÐЧµÄSSLÖ¤Êé½øÐмÓÃÜÈÏÖ¤¡£
¡ñ °²È«Òþ»¼¶þ£º
ʹÓÃä¯ÀÀÆ÷½Ó¼ûAPIʱ²úÉúµÄ°²È«Òâ±í
Web API ÊÇרÃÅΪ·¨Ê½¼äÏ໥ŲÓöøÉè¼ÆµÄ£¬ÈôÊÇÒâ±íµÄʹÓÃä¯ÀÀÆ÷À´½Ó¼û Web API ÔòÒ²¿ÉÄÜ´æÔÚ°²È«ÎÊÌâ¡£
? XSS¹¥»÷
XSS¹¥»÷½«Óû§µÄ·¸·¨ÊäÈëµÄJavaScript¾ç±¾ÔÚÏìÓ¦Ò³ÃæµÄHTMLÖÐÖ´ÐС£¹¥»÷Õß¿ÉÄÜÀûÓÃXSS·ì϶½Ù³Ö»á»°¡¢µÁÈ¡Cookie¡¢´Û¸ÄÒ³ÃæµÈ²Ù×÷¡£ÔÚWeb API ·µ»Ø JSON Êý¾Ýʱ£¬ÈôÊÇContent-Type ÉèÖò»ºÏÀí±ã»áÔì³É XSS ·ì϶¹¥»÷¡£
µ±·þÎñÆ÷·µ»Ø¸Ã JSON Êý¾Ýʱ£¬½«ÏìӦͷÖеÄContent-TypeÉèÖÃΪtest/html »òÕßÉèÖÃΪContent-Type: text/plain£¨IEÏÂÄܹ»Ö´ÐУ©Ê±£¬¸Ã JSON Êý¾Ý±»Ú¹ÊÍΪ HTML ´úÂ룬ä¯ÀÀÆ÷Ö±½ÓÖ´ÐÐÁËÆäÖеÄJavaScript´úÂë¡£
? CSRF¹¥»÷
Web API ·À»¤CSRF ¹¥»÷µÄ²½ÖèºÍͨÀýµÄ Web ÍøÕ¾²¢Ã»ÓÐʲô·ÖÆç¡£Í¨³£±ØÒª²»ÈÝͨ¹ýGET²½ÖèÅú¸Ä·þÎñ¶ËµÄÊý¾Ý£¬¶øÊÇѡȡ POST¡¢PUT¡¢DELETEµÈ²½Öè½øÐг߶Ȼ¯²Ù×÷¡£¼´±ãÉèÖÃÁ˲»ÔÊÐíGET·½Ê½Åú¸Ä·þÎñÆ÷Êý¾Ý£¬CSRFÒÀÈ»Äܹ»Í¨¹ýForm±íµ¥Ê¹ÓÃPOST²½ÖèÌáÒé¹¥»÷£¬²¢ÇÒ²»ÊÜͬԴսÊõµÄÓ°Ïì¡£
¡ñ °²È«Òþ»¼Èý£º
ÒµÎñ²ãÃæµÄ¶ñÒâ½Ó¼û
? ´Û¸ÄID·¸·¨»ñÈ¡Óû§Ãô¸ÐÐÅÏ¢
´Û¸ÄÒªÇó²ÎÊý»ñÈ¡Ãô¸ÐÐÅÏ¢£¬¹¥»÷ÕßÄܹ»Í¨¹ýÅú¸Ä¿Í»§¶Ë·¢Ë͵½·þÎñÆ÷µÄ²ÎÊý£¬Ì°Í¼»ñȡȨÏÞÁìÓòÖ®±íµÄÃô¸ÐÐÅÏ¢¡£ÀýÈçʹÓÃÒÔÏ´ó¾ÖµÄ
URL:
https://api.example.com/v1/user/123?info=email
´Ó´ó¾ÖÉÏÀ´¿´£¬URLÖеÄ123¿ÉÄÜΪÓû§ID£¬Èç¹ûÌá½»¸ÃURLÒªÇóÄܹ»»ñÈ¡µ½IDΪ123Óû§µÄemailÐÅÏ¢£¬ÄÇô¹¥»÷Õßͨ¹ýÅú¸ÄÓû§ID¾ÍÄÜ»ñÈ¡µ½ÆäËûÓû§µÄemailÐÅÏ¢¡£
ÏÂÃæ¾ßÌå·ÖÎöÒ»ÏÂÕâ¸öÎÊÌ⣬ͨ³£µÄÓÐЩWeb API Éè¼Æ¶ØÄÀ£¬Í¨³£ÔÚURLÀïÃæÊ¹ÓÃuser¹Ø¼ü×Ö»òÕßÔÚ²ÎÊýÀïÃæÊ¹ÓÃemail¹Ø¼ü×ÖÀ´Åú×¢ÒµÎñµÄһЩÓйØÐÅÏ¢¡£Éè¼ÆÕß³õÖÔÊÇΪÁË¿ª·¢ÕßÔ½·¢µ¥Ò»ÁËÈ»µÄʹÓÃAPIÀ´ÊµÏÖ·¨Ê½Å²Ó㬵«ÊÇÒ²¸ø¹¥»÷Õß´øÀ´¿É³ËÖ®»ú¡£¹¥»÷Õßͨ¹ý¶ÈÎöURLµÄ´ó¾ÖÌØµã²¢½áºÏ¾ßÌåµÄÒµÎñ¶Ô¹Ø¼ü×Ö½øÐд۸ģ¬Ì°Í¼·¸·¨»ñÈ¡Ãô¸ÐÐÅÏ¢¡£
? ²ÎÊýÒì³£ÊäÈëµ¼ÖÂδÊÚȨ²Ù×÷
APIµÄÉè¼ÆÕßÔÚÉè¼ÆÖ®³õÊÇΪÁË·½±ãµÄʹÓÃAPI½øÐз¨Ê½¼äµÄŲÓã¬ÓÐʱ˼¿¼²»µ½Ì«¶àµÄÒì³£ÊäÈëÔì³ÉµÄ°²È«Òþ»¼¡£ÀýÈç³ÛÃûµÄWordPressÍøÕ¾ÏµÍ³ÒѾ´æÔÚREST API ÓÉÓÚÒì³£ÊäÈëÔì³ÉȨÏÞÈÆ¹ý£¬¹¥»÷ÕßÄܹ»Í¨¹ýAPI´Û¸ÄÍøÕ¾Ò³ÃæÄÚÈÝ¡£
WordPress 4.7ÒÔÉϵİ汾£¬WordPress REST APIÌṩÁËÒ»×éÒ×ÓÚʹÓõÄHTTP¶Ëµã£¬Óû§Äܹ»ÒÔµ¥Ò»µÄJSONÌåʽ½Ó¼ûÍøÕ¾µÄÊý¾Ý£¬Ô̺¬Óû§£¬Ìû×Ó£¬·ÖÀàµÈ¡£¼ìË÷»ò¸üÐÂÊý¾ÝÓë·¢ËÍHTTPÒªÇóÒ»Ñùµ¥Ò»¡£API ÌṩÁ˶ÔÓû§¡¢ÎÄÕ¡¢·ÖÀàµÈ·ÖÆçÖ°ÄܵĽÚÔ죬ҲÄܹ»Í¨¹ý API ¼ìË÷»òÅú¸ÄÎÄÕ¡£ÔÚWorePress 4.7.0ºÍ4.7.1°æ±¾ÖдæÔÚ·ì϶£¬ÓÉÓÚȨÏÞ½ÚÔìʧЧµ¼ÖÂÄÚÈÝ×¢Èë»òÅú¸Ä£¬¹¥»÷Õßͨ¹ýÅú¸ÄidΪһ¸öÒì³£Öµ¾ÍÄܹ»ÊµÏÖÍøÕ¾ÄÚÈݵĴ۸쬶ø²»±ØÒªÈκÎÈÏÖ¤ÐÅÏ¢¡£
Wordpress ÌṩµÄ²¿ÃÅ API Ö°ÄÜ:
²é¿´ÎÄÕÂÁбí
GET /index.php/wp-json/wp/v2/posts
¼ìË÷ÎÄÕÂ
GET /index.php/wp-json/wp/v2/posts/1
Åú¸ÄÎÄÕÂ
POST /index.php/wp-json/wp/v2/posts/1?id=1
Content-Type: application/json
{"title":"test"}
Ìá½»ÒÔÉÏÅú¸ÄÎÄÕµÄÒªÇ󣬷þÎñÆ÷·µ»Ø401 δÈÏÖ¤¡£
ÈôÊÇÉÔ΢Åú¸ÄÒÔÉϵÄURLÄÚÈÝ£¬ÀýÈçÅú¸ÄΪPOST /index.php/wp-json/wp/v2/posts/1?id=1abc£¬¼´½«id²ÎÊýµÄÖµÓÉ1Åú¸ÄΪ1abc£¬Ôٴγ¢ÊÔÌá½»¡£·þÎñÆ÷·µ»Ø200 OK£¬WordPressÍøÕ¾µÄµÚһƪÎÄÕ±êÌâ±»Åú¸ÄΪtest£¬¹¥»÷³É¹¦¡£
¡ôWAF¼ì²âÓë·À»¤¡ô
Web APIºÍͨ³£µÄÀûÓÃÀàËÆ¶¼ÊÇͨ¹ýHTTPºÍ̸¶Ô±í·þÎñ£¬Í¨³£WebÀûÓÃÖдæÔڵķì϶ºÍȱµã£¬ÔÚWeb API ÖÐͬÑùÒ²»á´æÔÚ¡£GA»Æ½ð¼×WAF²úÆ·ÓÐרÃÅAPI·À»¤Ä£¿é£¬Í¨¹ý¸Ã·À»¤Ä£¿éÓëWAFÖ°ÄÜÏà½áºÏ¿É¶ÔWeb APIµÄÎÊÌâ½øÐмì²âÓë·À»¤£¬Web API·À»¤Ä£¿é¼°API¹¥»÷¼ì²âÉϱ¨ÊÂÎñ£¬ÈçÏ£º
GA»Æ½ð¼×WAF²úÆ·ÊÊÓ¦´ÓÓ×ÐÍÆóÒµµ½´óÐÍÊý¾ÝÖÐÐĵȸ÷Àà¹æÄ£ºÍ¿Í»§ÒµÎñÄ£ÐÍϵÄÍøÂç»·¾³£¬²¢¿í·ºÀûÓÃÓÚ½ðÈÚ¡¢ÔËÓªÉÌ¡¢µ±¾Ö¡¢ÄÜÔ´¡¢´óÆóÒµ¡¢Ñ̲ݡ¢Ë°Îñ¡¢½»Í¨¡¢ÎÀÉú¡¢½ÌÓýµÈÐÐÒµÁìÓò¡£
GA»Æ½ð¼××÷ΪÖйúÐÅÏ¢°²È«ÐÐÒµµÄÁ캽ÆóÒµ£¬Ò»Ïò±ü³Ð³ÏÐźʹ´ÐÂÐÄÁ飬ÖÂÁ¦ÓÚÌṩӵÓйú¼Ê¾ºÕùÁ¦µÄ¡¢×ÔÖ÷´´ÐµÄWAF°²È«²úÆ·¡£GA»Æ½ð¼×WAF²úÆ·ÈëΧGartnerħÁ¦ÏóÏÞ£¬Æ¾¾ÝµÚÈý·½Frost& SullivanȨÍþ»ú¹¹WAFÊг¡Õ¼ÓÐÂÊÂ½Ðø5ÄêÅÅÃûµÚÒ»£¬GA»Æ½ð¼×WAF²úÆ·Â½Ðø¶àÄêÔÚ´óÖйúÇøWAFÊг¡ÃûÁÐǰé¡£


¾©¹«Íø°²±¸11010802024551ºÅ