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 ¡£
ÉÏÎÄÖÐÌáµ½£¬ÎÒÃDZØÒªÒ»¸ö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ºÅ