SUPEE−6285の適用後はカスタムテーマにも修正箇所の反映を
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
SUPEE-6285は、Magento Community Edition 1.9.2.0より前のバージョン全てに対するセキュリティパッチです。
Community Edition 1.6.0.0〜1.9.1.1までのバージョンについては、適用することが強く推奨されています。
ところが、このパッチを適用しても、対応が不十分になる箇所が出てくる恐れがあります。
このエントリではどの箇所が対応不十分になるのかを解説し、対処法をご説明します。
SUPEE−6285で変更を受けるファイル
SUPEE-6285を適用すると、以下のファイルが更新されます。
- app/Mage.php
- app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php
- app/code/core/Mage/Adminhtml/Controller/Action.php
- app/code/core/Mage/Adminhtml/controllers/AjaxController.php
- app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php
- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php
- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php
- app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php
- app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php
- app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php
- app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
- app/code/core/Mage/Adminhtml/controllers/Customer/System/Config/ValidatevatController.php
- app/code/core/Mage/Adminhtml/controllers/JsonController.php
- app/code/core/Mage/Adminhtml/controllers/NotificationController.php
- app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php
- app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php
- app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php
- app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php
- app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php
- app/code/core/Mage/Adminhtml/controllers/Report/TagController.php
- app/code/core/Mage/Adminhtml/controllers/ReportController.php
- app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php
- app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php
- app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php
- app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php
- app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php
- app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php
- app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php
- app/code/core/Mage/Adminhtml/controllers/TagController.php
- app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php
- app/code/core/Mage/Api2/controllers/Adminhtml/Api2/AttributeController.php
- app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php
- app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php
- app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php
- app/code/core/Mage/Checkout/controllers/MultishippingController.php
- app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php
- app/code/core/Mage/Core/Block/Abstract.php
- app/code/core/Mage/ImportExport/Model/Abstract.php
- app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php
- app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php
- app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php
- app/code/core/Mage/Rss/controllers/CatalogController.php
- app/code/core/Mage/Rss/controllers/OrderController.php
- app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php
- app/code/core/Mage/Widget/controllers/Adminhtml/WidgetController.php
- app/design/frontend/base/default/template/checkout/cart.phtml
- app/design/frontend/base/default/template/checkout/cart/noItems.phtml
- app/design/frontend/base/default/template/checkout/onepage/failure.phtml
- app/design/frontend/base/default/template/rss/order/details.phtml
- app/design/frontend/base/default/template/wishlist/email/rss.phtml
- app/design/frontend/default/modern/template/checkout/cart.phtml
- app/design/frontend/rwd/default/template/checkout/cart.phtml
- downloader/Maged/.htaccess
- downloader/lib/.htaccess
- errors/processor.php
このうち、フロントエンド側に影響するのは以下のファイルです。
- app/design/frontend/base/default/template/checkout/cart.phtml
- app/design/frontend/base/default/template/checkout/cart/noItems.phtml
- app/design/frontend/base/default/template/checkout/onepage/failure.phtml
- app/design/frontend/base/default/template/rss/order/details.phtml
- app/design/frontend/base/default/template/wishlist/email/rss.phtml
- app/design/frontend/default/modern/template/checkout/cart.phtml
- app/design/frontend/rwd/default/template/checkout/cart.phtml
これらのファイルがサードパーティ製のテーマや、カスタムテーマの側で改変されている場合は、個別に調整が必要になります。
どのような対応が必要なのか
先ほどのファイルのどれかを開いて内容を確認すると、以下のように相違があると思います。
適用前:
echo $this->__('Click here to continue shopping.', $this->getContinueShoppingUrl())
適用後:
echo $this->__('Click here to continue shopping.', Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl()))
つまり、”$this->getContinueShoppingUrl()”を Mage::helper('core')->quoteEscape() で囲い、URLがHTMLとして出力される際にエスケープする必要性がある、というわけです。
対応が漏れるとどうなるのか
対応が漏れたまま放置すると、以下の問題が発生する恐れがあります。
- 「お買い物を続ける」リンクに対するXSS(クロス・サイト・スクリプティング)
脆弱性を放置し続けると、顧客情報の漏洩や、コンテンツの改竄などの危険性があるため、早めに対処することが望ましいといえます。
直し方がわからない場合は
有償サポートにはなりますが、弊社にて調整を承ることが可能です。
ご不安な方はお問い合わせください。