Drupal Ô¶³Ì´úÂëÖ´ÐÐÎó²îÇ徲ͨ¸æ
Ðû²¼Ê±¼ä 2019-02-22Îó²î±àºÅºÍ¼¶±ð
CVE±àºÅ£ºCVE-2019-6340£¬£¬£¬£¬Î£ÏÕ¼¶±ð£ºÑÏÖØ£¬£¬£¬£¬ CVSS·ÖÖµ£º¹Ù·½Î´ÆÀ¶¨
Ó°Ïì¹æÄ£
ÊÜÓ°Ïì°æ±¾£º
Îó²îÓ°ÏìDrupal 8.6.x¡¢Drupal 8.5.x ¼° Drupal 7ÖеIJ¿·Ö×é¼þ¡£¡£¡£Ïêϸ°æ±¾ÐÅÏ¢ÈçÏ£º
Drupal 8.6.9 ¼°ÒÔϰ汾
Drupal 8.6.10 ¼°ÒÔϰ汾
Ó°Ïì×é¼þ
RESTful Web Services
JSON:API
Link
Metatag
Video
Paragraphs
Translation Management Tool
Font Awesome lcons
Îó²î¸ÅÊö
2ÔÂ20ÈÕ£¬£¬£¬£¬Drupal ¹Ù·½Åû¶ÁËÒ»¸ö Drupal µÄÔ¶³ÌÏÂÁîÖ´ÐÐÎó²î£¬£¬£¬£¬Îó²îÊÇÓÉDrupal δ¶ÔRESTful WebµÄÊý¾Ý¾ÙÐÐÑÏ¿áЧÑéÔì³É¡£¡£¡£ÈôÊÇÍøÕ¾¿ªÆôÁËRESTful WebЧÀÍ£¬£¬£¬£¬²¢ÇÒ½ÓÊÜPATCH ¡¢POSTÇëÇ󣬣¬£¬£¬»òÕ¾µãÖпªÆôÁËÆäËûwebЧÀÍÄ£¿£¿£¿£¿£¿é£¬£¬£¬£¬½«»á·ºÆð·´ÐòÁл¯ÎÊÌ⣬£¬£¬£¬½ø¶øÔì³É´úÂëÖ´ÐС£¡£¡£
ƾ֤Drupal µÄÉèÖ㬣¬£¬£¬´ËÎó²î¿ÉÄܲ»ÐèÒªÈκÎȨÏÞ¼´¿É´¥·¢¡£¡£¡£¿ÉÊÇÈôÊDZ»Ê¹Ó㬣¬£¬£¬¹¥»÷ÕßÔò¿ÉÒÔÖ±½ÓÔÚWebЧÀÍÆ÷ÉÏÖ´ÐÐí§ÒâPHP´úÂ룬£¬£¬£¬Ôì³ÉЧÀÍÆ÷±»ÈëÇÖ¡¢Óû§ÐÅϢй¶µÈЧ¹û¡£¡£¡£
RESTful ЧÀÍĬÈϲ»¿ªÆô£¬£¬£¬£¬´ó´ó½µµÍÎó²îΣº¦¡£¡£¡£ÎªÇå¾²Æð¼û£¬£¬£¬£¬½¨ÒéʹÓÃDrupal µÄÓû§ÊµÊ±¾ÙÐа汾Éý¼¶¡£¡£¡£
Îó²îϸ½Ú
1. Îó²î¶¨Î»
Îó²îͨ¸æÖ¸³öÁË Drupal 8 ÔÚ¿ªÆôÁË RESTful Web Services Ä£¿£¿£¿£¿£¿é£¬£¬£¬£¬Í¬Ê±ÔÊÐíÁË PATCH / POST ÒªÁìÇëÇóºó£¬£¬£¬£¬¿ÉÒÔÔì³É´úÂëÖ´ÐÐÎó²î¡£¡£¡£
ƾ֤ commit log£¨https://github.com/drupal/core/commit/24b3fae89eab2b3951f17f80a02e19d9a24750f5£©¿ÉÒÔ¶¨Î»µ½Îó²îµÄ´¥·¢Ôµ¹ÊÔÓÉÔÚÓÚ·´ÐòÁл¯µÄ²Ù×÷£º
¿ÉÒÔÍÆ²âÓ¦¸ÃÊÇÔÚ¾ÙÐÐ REST API ²Ù×÷µÄÀú³ÌÖУ¬£¬£¬£¬options ²ÎÊýµÄÄÚÈÝ´øÈëµ½ unserialize º¯Êýµ¼Öµġ£¡£¡£Í¨¹ý diff ¿ÉÒÔ·¢Ã÷ LinkItem.php ºÍ MapItem.php ¶¼Êܵ½Ó°Ï죬£¬£¬£¬ÕâÀï´Ó LinkItem À´ÏòÉÏÍÚ¾òÎó²îµã¡£¡£¡£
Éó²é core\modules\link\src\Plugin\Field\FieldType\LinkItem.php£º
ÊáÀíÁËÆäÕû¸öŲÓÃÁ´£¬£¬£¬£¬´Ó REST ÇëÇó×îÏÈ£¬£¬£¬£¬ÏÈͨ¹ýÓû§´«ÈëµÄ JSON µÄ _links.type »ñÈ¡ÁËÆä¶ÔÓ¦µÄ Entity£¬£¬£¬£¬ÔÙ»ñÈ¡ Entity ÄÚµÄ Fields ÁÐ±í£¬£¬£¬£¬±éÀúÕâ¸öÁбí»ñµÃ key£¬£¬£¬£¬´ÓÓû§´«ÈëµÄ JSON ÄÚÈ¡³ö key£¬£¬£¬£¬Æ´½Ó³ÉΪ field_item:key µÄÐÎʽ£¨Àú³ÌÂÔ£©£¬£¬£¬£¬×îÖÕÔÚ getDefinition ÄÚ²éÕÒÁË definitions Êý×éÄÚµÄ×ֶνç˵£¬£¬£¬£¬»ñµÃÒ»¸ö¶ÔÓ¦µÄ Field µÄʵÀý¹¤¾ß£¬£¬£¬£¬Àú³Ì¸ÅÂÔÈçÏ£º
½Ó×Å FieldNormalizer µÄ denormalize ÒªÁìŲÓÃÁË Field µÄ setValue ÒªÁì¡£¡£¡£
Ò²¾ÍÊÇ˵£¬£¬£¬£¬ÎÒÃÇÈôÊÇ¿ÉÒÔ½« $field_item ¿ØÖÆÎª LinkItem »òÕß MapItem£¬£¬£¬£¬¼´¿É´¥·¢·´ÐòÁл¯¡£¡£¡£
2. ´¥·¢µã½á¹¹
ÎÒÃÇÔÚ Drupal ºǫ́ÉèÖúà RESTful Web Service ²å¼þ£¬£¬£¬£¬Ñ¡ÔñÒ»¸ö¿ÉÒÔ¾ÙÐÐ POST
µÄ²Ù×÷¡£¡£¡£ÎªÁ˾¡¿ÉÄÜÄ£ÄâÍøÕ¾ÖÎÀíÔ±µÄÉèÖ㬣¬£¬£¬ÎÒÃÇÕâÀïÔÊÐí¹ØÓÚ/user/registerµÄ POST²Ù
×÷¡£¡£¡£ÓÚÇéÓÚÀí£¬£¬£¬£¬Óû§×¢²á´¦±Ø¶¨¿ÉÒÔ×÷ΪÄäÃûÓû§À´¾ÙÐвÙ×÷¡£¡£¡£¿£¿£¿£¿£¿ªÆô/user/register £º
ÉèÖÃÔÊÐíÄäÃûÓû§Ê¹Óà POST À´»á¼û /user/register ¡£¡£¡£
ÉÏÎÄÖÐÌáµ½£¬£¬£¬£¬ÎÒÃÇÐèÒªÒ»¸öEntityÄÚ±£´æLinkItem Field¡£¡£¡£Í¨¹ý¹ØÓÚEntityµÄ²éÕÒ£¬£¬£¬£¬¶¨Î»µ½MenuLinkContentºÍShortcutʹÓÃÁËLinkItem£¬£¬£¬£¬Ê¹ÓÃShortcutÀ´¾ÙÐнøÒ»²½µÄ²âÊÔ¡£¡£¡£
Shortcut µÄ _links.type Ϊ http://127.0.0.1/rest/type/shortcut/default£¬£¬£¬£¬¿ÉÒÔÔÚµ¥²½µÄʱ¼äÕÒµ½£¬£¬£¬£¬Àú³Ì²»Ð𡣡£¡£Ïò /user/register ·¢ËÍ POST ÇëÇ󣬣¬£¬£¬Í¬Ê±ÔÚ PHPStorm ÄÚ½«¶ÏµãÏÂÔÚ
ore\modules\hal\src\Normalizer\FieldItemNormalizer.php µÄ denormalize º¯Êý£º
¿ÉÒÔ·¢Ã÷£¬£¬£¬£¬ÔÚŲÓà setValue ÒªÁìµÄÏÖ³¡£¬£¬£¬£¬$field_itemΪLinkItem¡£¡£¡£¸úÈësetValue ÒªÁ죬£¬£¬£¬Æ¾Ö¤Âß¼£¬£¬£¬£¬ÈôÊÇ$valuesΪһ¸öÊý×é¡£¡£¡£ÇÒ$values['options']±£´æ£¬£¬£¬£¬ÄÇô¾ÍÖ´Ðз´ÐòÁл¯²Ù×÷¡£¡£¡£ÎÒÃÇÐÞ¸ÄpayloadΪ¼´¿É´¥·¢·´ÐòÁл¯¡£¡£¡£
¹¥»÷ÕßʹÓô˷´ÐòÁл¯¿ÉÒÔÔÚЧÀÍÆ÷ÉÏÖ´ÐÐí§Òâ´úÂë¡£¡£¡£
ÐÞ¸´½¨Òé
ÐÞ¸´¼Æ»®ÈçÏ£º
Drupal 8.6.x°æ±¾Éý¼¶µ½8.6.10
Drupal 8.5.x»ò¸üÔçÆÚ°æ±¾°æ±¾Éý¼¶µ½8.5.11°æ±¾
Drupal 7ÔÝÎÞ¸üÐÂ
»º½â²½·¥ÈçÏ£º
½ûÓÃRESTful Web ServicesÄ£¿£¿£¿£¿£¿é
ÉèÖÃЧÀÍÆ÷²»ÔÊÐíPOST/PATCHÇëÇó
²Î¿¼Á´½Ó
https://www.drupal.org/sa-core-2019-003


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