SKU allows characters that are invalid for Varnish ESI loading #7513
Labels
bug report
Component: Framework/Cache
Issue: Cannot Reproduce
Cannot reproduce the issue on the latest `2.4-develop` branch
Issue: Format is valid
Gate 1 Passed. Automatic verification of issue format passed
Issue: Ready for Work
Gate 4. Acknowledged. Issue is added to backlog and ready for development
Preconditions
Steps to reproduce
Expected result
Actual result
Warning: SimpleXMLElement::xpath(): Invalid predicate in /server/sites/strancommerce.dev/vendor/magento/framework/View/Model/Layout/Merge.php on line 523
Cause
The apostrophe in the SKU is also included in the resulting layout update handle. When using Varnish, blocks being loaded via ESI result in requests like the following being issued from Varnish to the web server:
http://www.mysite.com/page_cache/block/esi/blocks/[%22catalog.topnav%22]/handles/[%22default%22,%22catalog_product_view%22,%22catalog_product_view_id_231%22,%22catalog_product_view_sku_Men%27s%20Shirt,%22catalog_product_view_type_configurable%22]/
In \Magento\Framework\View\Model\Layout\Merge::_fetchPackageLayoutUpdates, the update handle containing the SKU is passed straight to an xpath expression, where the special character results in the error.
If special characters like apostrophes are considered valid in a SKU, the ESI/layout processing should be modified accordingly to avoid the error. If they are not considered valid, sanitation should be done on SKUs to remove them when saving a product.
The same issue described here, but ticket has been closed due to missing information: #5032
The same issue has been resolved in the Pull Request #874 but seems like it has never been merged into Core.
Hope you can include the fix into upcoming release (2.1.3)
The text was updated successfully, but these errors were encountered: