APIÍþв·À»¤Êµ¼ÊÖ®ÌìÇåWebÀûÓð²È«Íø¹ØÏµÍ³

°ä²¼¹¦·ò 2018-06-25
Ëæ×Å Web 2.0 ʱÆÚµÄµ½À´£¬£¬ÓÉÓÚ JSON Êý¾ÝÌåʽµ¥Ò»£¬£¬ÈÝÒ׿ª·¢¡£¡£¿ª·¢Õ߸üϲ»¶Ê¹Óà JSON ÌåʽÀ´±àд API£¬£¬Web API Ò²³öÏÖ·¢×÷ÐÔµÄÔö³¤¡£¡£³ö¸ñÊǽü¼¸ÄêÀ´£¬£¬Ëæ×ÅÉ罻ýÌåºÍÔÚÏß·þÎñµÄ·¢Õ¹£¬£¬·þÎñµÄÌṩÕ߸üϲ»¶¶ÔÍâÌṩʢ¿ªµÄ Web API ¹©¿ª·¢ÕßŲÓᣡ£¿ª·¢Õßͨ¹ýÍøÂçŲÓà Web API ʵÏֵǼÈÏÖ¤¡¢ÐÂÎÅÍÆËÍ¡¢¶©µ¥Ö§¸¶µÈÖ°ÄÜ£¬£¬API Ö®¼äµÄÏ໥ŲÓü«´óµÄÌá¸ßÁË¿ª·¢Ð§ÄÜ£¬£¬¿ª·¢ÕßÄܹ»Ôڶ̹¦·òÄÚʵÏÖÀûÓõÄÉè¼ÆÓ뿪·¢¡£¡£Ö»ÓзþÎñÌṩÕß¶ÔÍ⹫¿ªÁË API£¬£¬¿ª·¢Õß¾ÍÄܹ»ºÜµ¥Ò»µÄ½«·þÎñ¼¯³É½ø×Ô¼ºµÄÀûÓ㬣¬Ö±½ÓµÄÏíÊܸ÷þÎñ£¬£¬·ÖÆçµÄ·þÎñÌṩÕß¼¯ÖÐÔÚһ·×êÓª¹²Í¬·¢Õ¹¡£¡£

Web 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 ÊÇרÃÅΪ·¨Ê½¼äÏ໥ŲÓöøÉè¼ÆµÄ£¬£¬ÈôÊDz»²âµÄʹÓÃä¯ÀÀÆ÷À´½Ó¼û 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 ÖÐͬÑùÒ²»á´æÔÚ¡£¡£OG¶«·½ÌüWAF²úÆ·ÓÐרÃÅAPI·À»¤Ä£¿é£¬£¬Í¨¹ý¸Ã·À»¤Ä£¿éÓëWAFÖ°ÄÜÏà½áºÏ¿É¶ÔWeb APIµÄÎÊÌâ½øÐмì²âÓë·À»¤£¬£¬Web API·À»¤Ä£¿é¼°API¹¥»÷¼ì²âÉϱ¨ÊÂÎñ£¬£¬ÈçÏ£º
 292106229195

292106226226

292106225964

OG¶«·½ÌüWAF²úÆ·ÊÊÓ¦´ÓСÐÍÆóÒµµ½´óÐÍÊý¾ÝÖÐÐĵȸ÷Àà¹æÄ£ºÍ¿Í»§ÒµÎñÄ£ÐÍϵÄÍøÂç»·¾³£¬£¬²¢¿í·ºÀûÓÃÓÚ½ðÈÚ¡¢ÔËÓªÉÌ¡¢µ±¾Ö¡¢ÄÜÔ´¡¢´óÆóÒµ¡¢Ñ̲Ý¡¢Ë°Îñ¡¢½»Í¨¡¢ÎÀÉú¡¢½ÌÓýµÈÐÐÒµÁìÓò¡£¡£

OG¶«·½Ìü×÷ΪÖйúÐÅÏ¢°²È«ÐÐÒµµÄÁ캽ÆóÒµ£¬£¬Ò»Ïò±ü³Ð³ÏÐźʹ´ÐÂÐÄÁ飬£¬ÖÂÁ¦ÓÚÌṩӵÓйú¼Ê¾ºÕùÁ¦µÄ¡¢×ÔÖ÷´´ÐµÄWAF°²È«²úÆ·¡£¡£OG¶«·½ÌüWAF²úÆ·ÈëΧGartnerħÁ¦ÏóÏÞ£¬£¬Æ¾¾ÝµÚÈý·½Frost& SullivanȨÍþ»ú¹¹WAFÊг¡Õ¼ÓÐÂÊÂ½Ðø5ÄêÅÅÃûµÚÒ»£¬£¬OG¶«·½ÌüWAF²úÆ·Â½Ðø¶àÄêÔÚ´óÖйúÇøWAFÊг¡ÃûÁÐǰé¡£¡£