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 ÖÐͬÑùÒ²»á±£´æ¡£¡£ÈËÉú¾ÍÊDz©WAF²úÆ·ÓÐרÃÅAPI·À»¤Ä£¿£¿£¿é£¬£¬Í¨¹ý¸Ã·À»¤Ä£¿£¿£¿éÓëWAF¹¦Ð§ÏàÁ¬Ïµ¿É¶ÔWeb APIµÄÎÊÌâ¾ÙÐмì²âÓë·À»¤£¬£¬Web API·À»¤Ä£¿£¿£¿é¼°API¹¥»÷¼ì²âÉϱ¨ÊÂÎñ£¬£¬ÈçÏ£º
ÈËÉú¾ÍÊDz©WAF²úƷ˳Ӧ´ÓСÐÍÆóÒµµ½´óÐÍÊý¾ÝÖÐÐĵÈÖÖÖÖ¹æÄ£ºÍ¿Í»§ÓªÒµÄ£×ÓϵÄÍøÂçÇéÐΣ¬£¬²¢ÆÕ±éÓ¦ÓÃÓÚ½ðÈÚ¡¢ÔËÓªÉÌ¡¢Õþ¸®¡¢ÄÜÔ´¡¢´óÆóÒµ¡¢Ñ̲ݡ¢Ë°Îñ¡¢½»Í¨¡¢ÎÀÉú¡¢½ÌÓýµÈÐÐÒµÁìÓò¡£¡£
ÈËÉú¾ÍÊDz©×÷ΪÖйúÐÅÏ¢Çå¾²ÐÐÒµµÄÁ캽ÆóÒµ£¬£¬Ò»Ö±³Ð¼Ì³ÏÐźÍÁ¢Ò쾫Éñ£¬£¬ÖÂÁ¦ÓÚÌṩ¾ßÓйú¼Ê¾ºÕùÁ¦µÄ¡¢×ÔÖ÷Á¢ÒìµÄWAFÇå¾²²úÆ·¡£¡£ÈËÉú¾ÍÊDz©WAF²úÆ·ÈëΧGartnerħÁ¦ÏóÏÞ£¬£¬Æ¾Ö¤µÚÈý·½Frost& SullivanȨÍþ»ú¹¹WAFÊг¡Õ¼ÓÐÂÊÒ»Á¬5ÄêÅÅÃûµÚÒ»£¬£¬ÈËÉú¾ÍÊDz©WAF²úÆ·Ò»Á¬¶àÄêÔÚ´óÖйúÇøWAFÊг¡Ñ¹µ¹Ò»ÇС£¡£


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