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£©¿ÉÒÔ¶¨Î»µ½Îó²îµÄ´¥·¢Ôµ¹ÊÔ­ÓÉÔÚÓÚ·´ÐòÁл¯µÄ²Ù×÷£º


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾



¿ÉÒÔÍÆ²âÓ¦¸ÃÊÇÔÚ¾ÙÐÐ REST API ²Ù×÷µÄÀú³ÌÖÐ £¬ £¬£¬£¬options ²ÎÊýµÄÄÚÈÝ´øÈëµ½ unserialize º¯Êýµ¼ÖµÄ¡£¡£¡£Í¨¹ý diff ¿ÉÒÔ·¢Ã÷ LinkItem.php ºÍ MapItem.php ¶¼Êܵ½Ó°Ïì £¬ £¬£¬£¬ÕâÀï´Ó LinkItem À´ÏòÉÏÍÚ¾òÎó²îµã¡£¡£¡£


Éó²é core\modules\link\src\Plugin\Field\FieldType\LinkItem.php£º


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


ÊáÀíÁËÆäÕû¸öŲÓÃÁ´ £¬ £¬£¬£¬´Ó REST ÇëÇó×îÏÈ £¬ £¬£¬£¬ÏÈͨ¹ýÓû§´«ÈëµÄ JSON µÄ _links.type »ñÈ¡ÁËÆä¶ÔÓ¦µÄ Entity £¬ £¬£¬£¬ÔÙ»ñÈ¡ Entity ÄÚµÄ Fields ÁÐ±í £¬ £¬£¬£¬±éÀúÕâ¸öÁбí»ñµÃ key £¬ £¬£¬£¬´ÓÓû§´«ÈëµÄ JSON ÄÚÈ¡³ö key £¬ £¬£¬£¬Æ´½Ó³ÉΪ field_item:key µÄÐÎʽ£¨Àú³ÌÂÔ£© £¬ £¬£¬£¬×îÖÕÔÚ getDefinition ÄÚ²éÕÒÁË definitions Êý×éÄÚµÄ×ֶνç˵ £¬ £¬£¬£¬»ñµÃÒ»¸ö¶ÔÓ¦µÄ Field µÄʵÀý¹¤¾ß £¬ £¬£¬£¬Àú³Ì¸ÅÂÔÈçÏ£º


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


½Ó×Å FieldNormalizer µÄ denormalize ÒªÁìŲÓÃÁË Field µÄ setValue ÒªÁì¡£¡£¡£


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


Ò²¾ÍÊÇ˵ £¬ £¬£¬£¬ÎÒÃÇÈôÊÇ¿ÉÒÔ½« $field_item ¿ØÖÆÎª LinkItem »òÕß MapItem £¬ £¬£¬£¬¼´¿É´¥·¢·´ÐòÁл¯¡£¡£¡£


2. ´¥·¢µã½á¹¹
ÎÒÃÇÔÚ Drupal ºǫ́ÉèÖúà RESTful Web Service ²å¼þ £¬ £¬£¬£¬Ñ¡ÔñÒ»¸ö¿ÉÒÔ¾ÙÐÐ POST

µÄ²Ù×÷¡£¡£¡£ÎªÁ˾¡¿ÉÄÜÄ£ÄâÍøÕ¾ÖÎÀíÔ±µÄÉèÖà £¬ £¬£¬£¬ÎÒÃÇÕâÀïÔÊÐí¹ØÓÚ/user/registerµÄ POST²Ù

×÷¡£¡£¡£ÓÚÇéÓÚÀí £¬ £¬£¬£¬Óû§×¢²á´¦±Ø¶¨¿ÉÒÔ×÷ΪÄäÃûÓû§À´¾ÙÐвÙ×÷¡£¡£¡£¿£¿£¿£¿£¿ªÆô/user/register £º


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


ÉèÖÃÔÊÐíÄäÃûÓû§Ê¹Óà POST À´»á¼û /user/register ¡£¡£¡£


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


ÉÏÎÄÖÐÌáµ½ £¬ £¬£¬£¬ÎÒÃÇÐèÒªÒ»¸öEntityÄÚ±£´æLinkItem Field¡£¡£¡£Í¨¹ý¹ØÓÚEntityµÄ²éÕÒ £¬ £¬£¬£¬¶¨Î»µ½MenuLinkContentºÍShortcutʹÓÃÁËLinkItem £¬ £¬£¬£¬Ê¹ÓÃShortcutÀ´¾ÙÐнøÒ»²½µÄ²âÊÔ¡£¡£¡£


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


Shortcut µÄ _links.type Ϊ http://127.0.0.1/rest/type/shortcut/default £¬ £¬£¬£¬¿ÉÒÔÔÚµ¥²½µÄʱ¼äÕÒµ½ £¬ £¬£¬£¬Àú³Ì²»Ð𡣡£¡£Ïò /user/register ·¢ËÍ POST ÇëÇó £¬ £¬£¬£¬Í¬Ê±ÔÚ PHPStorm ÄÚ½«¶ÏµãÏÂÔÚ


ore\modules\hal\src\Normalizer\FieldItemNormalizer.php µÄ denormalize º¯Êý£º


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


¿ÉÒÔ·¢Ã÷ £¬ £¬£¬£¬ÔÚŲÓà setValue ÒªÁìµÄÏÖ³¡ £¬ £¬£¬£¬$field_itemΪLinkItem¡£¡£¡£¸úÈësetValue ÒªÁì £¬ £¬£¬£¬Æ¾Ö¤Âß¼­ £¬ £¬£¬£¬ÈôÊÇ$valuesΪһ¸öÊý×é¡£¡£¡£ÇÒ$values['options']±£´æ £¬ £¬£¬£¬ÄÇô¾ÍÖ´Ðз´ÐòÁл¯²Ù×÷¡£¡£¡£ÎÒÃÇÐÞ¸ÄpayloadΪ¼´¿É´¥·¢·´ÐòÁл¯¡£¡£¡£


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


¹¥»÷ÕßʹÓô˷´ÐòÁл¯¿ÉÒÔÔÚЧÀÍÆ÷ÉÏÖ´ÐÐí§Òâ´úÂë¡£¡£¡£


ÐÞ¸´½¨Òé


ÐÞ¸´¼Æ»®ÈçÏ£º

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