Bản vá bảo mật SUPEE-9767 - Các vấn đề có thể xảy ra?


108

Một bản vá bảo mật mới đã được phát hành cho Magento 1, giải quyết 16 vấn đề APPSEC: https://magento.com/security/patches/supee-9767

Bảy trong số các lỗ hổng bảo mật 8.0 hoặc cao hơn cho CVSSv3 Severity và chúng đang bị khai thác trong tự nhiên, vì vậy đây là một bản vá quan trọng. Các trang web có thể áp dụng SUPEE-9767 hoặc cập nhật lên bản phát hành mới CE 1.9.3.3 / EE 1.14.3.3.

Các vấn đề phổ biến hoặc cạm bẫy cần chú ý khi áp dụng SUPEE-9767 là gì?


CẬP NHẬT 2017-07-12:

Magento đã phát hành SUPEE-9767 V2CE 1.9.3.4 để giải quyết nhiều vấn đề từ bản vá ban đầu. Nếu bạn đã áp dụng V1, bạn nên hoàn nguyên và sau đó áp dụng V2. Nếu bạn chưa vá, chỉ cần áp dụng V2 và hầu hết các vấn đề được đưa ra ở đây sẽ không liên quan.


"Bảy trong số các lỗ hổng bảo mật điểm 8.0 hoặc cao hơn cho CVSSv3 Severity và chúng đang bị khai thác trong tự nhiên, vì vậy đây là một bản vá quan trọng." Tôi chỉ muốn kiểm tra, "kẻ tấn công" cần vào quản trị viên để thực hiện bất kỳ khai thác nào trong số này?
Lúa

3
vâng, bạn phải có quyền truy cập quản trị viên để khai thác ...
MagenX

Bản vá dường như không dừng được điểm cuối vũ phu thông thường, (ví dụ / rss / order / new) dường như là cách phổ biến nhất mà các nhà đóng chai đang cố gắng truy cập vào các khu vực quản trị?
Ricky Odin Matthews

1
Tôi sử dụng điều này cho RSS @RickyOdinMatthews trong .htaccess RewriteRule ^/?(index.phprss|index.php/rss/catalog|index.php/rss/order|rss/catalog|rss/order).*$ /no-route [R=301,L,NC]
Richard Feraro

@RichardFeraro Tôi sử dụng nginx, nhưng đã sử dụng một giải pháp tương tự. Tôi đã nhận thấy các bot thường quét và mặc dù vũ phu các điểm cuối này.
Ricky Odin Matthews

Câu trả lời:


107

Dưới đây là tổng quan của tôi về bản vá sau khi đào sâu vào nó

THỜI GIAN KHÔNG BAO GIỜ : Experius cung cấp trình trợ giúp vá giúp bạn tìm các tệp trong chủ đề tùy chỉnh, mô-đun tùy chỉnh hoặc ghi đè cục bộ cũng có thể cần phải vá bằng tay , bạn có thể tìm thấy tại đây: https://github.com/experius/Magento- 1-Experius-Patch-Helper # magento

Phím mẫu thanh toán

Như đã nói trong bài đăng khác, bản vá này thêm khóa biểu mẫu vào các biểu mẫu sau:

Hình thức giỏ hàng vận chuyển:

app/design/frontend/<package>/<theme>/template/checkout/cart/shipping.phtml

Hình thức thanh toán nhiều lần:

app/design/frontend/<package>/<theme>/template/checkout/multishipping/billing.phtml

Hình thức kiểm tra vận chuyển nhiều lần:

app/design/frontend/<package>/<theme>/template/checkout/multishipping/shipping.phtml

Mẫu thanh toán nhiều địa chỉ:

app/design/frontend/<package>/<theme>/template/checkout/multishipping/addresses.phtml

Hình thức thanh toán hóa đơn:

app/design/frontend/<package>/<theme>/template/checkout/onepage/billing.phtml

Hình thức kiểm tra vận chuyển:

app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping.phtml

Hình thức thanh toán:

app/design/frontend/<package>/<theme>/template/checkout/onepage/payment.phtml

Hình thức kiểm tra phương thức vận chuyển:

app/design/frontend/<package>/<theme>/template/checkout/onepage/shipping_method.phtml

Biểu mẫu thanh toán liên tục:

app/design/frontend/<package>/<theme>/template/persistent/checkout/onepage/billing.phtml

Trên hết, các tệp JS sau đây đã được cập nhật để tương thích với thay đổi đó:

  • js/varien/payment.js
  • skin/frontend/base/default/js/opcheckout.js

Phải làm gì:

Nếu bạn đang sử dụng với các phiên bản tùy chỉnh của các mẫu đó, bạn sẽ phải cập nhật chúng bằng cách thêm mã sau vào chúng:

<?php echo $this->getBlockHtml('formkey') ?>

Nếu bạn đang sử dụng mô-đun thanh toán của bên thứ 3, bạn sẽ phải liên lạc với họ để họ có thể cung cấp phiên bản cập nhật của mô-đun.

Ngoài ra, nếu bạn có các phiên bản tùy chỉnh của các tệp JS được liệt kê trước đó, bạn cũng sẽ phải cập nhật chúng.

TIẾT KIỆM THỜI GIAN CỦA BẠN :

Fabian Schmengler đã viết một kịch bản nhỏ đẹp để cập nhật tất cả những điều đó cho bạn, bạn có thể tìm thấy nó ở đây:

https://gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b

LƯU Ý QUAN TRỌNG : có thể thay đổi xác thực mã khóa kiểm tra trong phần phụ trợ thông qua trường cấu hình mới trong Hệ thống> Cấu hình> Quản trị viên> Bảo mật> Bật Xác thực khóa biểu mẫu khi thanh toán . ĐIỀU NÀY KHÔNG ĐƯỢC NÂNG CẤP B DENG DEFAULT vì vậy bạn sẽ phải cho phép nó được hưởng lợi từ tính năng bảo mật này !!! Lưu ý rằng bạn sẽ nhận được thông báo trong phần phụ trợ nếu nó không được bật.

Tải lên hình ảnh gọi lại

Bộ điều khiển bộ sưu tập hình ảnh đã được cập nhật để thêm một cuộc gọi lại xác nhận.

Phải làm gì

Nếu bạn đang sử dụng một mô-đun tùy chỉnh tải lên hình ảnh với mã trông như thế này:

        $uploader = new Mage_Core_Model_File_Uploader('image');
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
        $uploader->addValidateCallback('catalog_product_image',
            Mage::helper('catalog/image'), 'validateUploadFile');
        $uploader->setAllowRenameFiles(true);
        $uploader->setFilesDispersion(true);

Tôi thực sự khuyên bạn nên cập nhật mã đó bằng cách thêm đoạn sau vào sau:

        $uploader->addValidateCallback(
            Mage_Core_Model_File_Validator_Image::NAME,
            Mage::getModel('core/file_validator_image'),
            'validate'
        );

Liên kết

Bản vá này loại bỏ trường cấu hình hệ thống cho phép bạn cho phép các liên kết mẫu trong phần phụ trợ. Nó được sử dụng trong Hệ thống> Cấu hình> Nhà phát triển> Mẫu> Cho phép Liên kết . Bây giờ toàn bộ phần Mẫu đã biến mất.

Trên hết, trường đó hiện bị tắt theo mặc định thông qua app/etc/config.xml

Điều thú vị ở đây là bạn sẽ nhận được thông báo trong phần phụ trợ nếu bạn bật trường cấu hình đó trước bản vá nhưng bạn sẽ không thể tắt nó khi trường không còn nữa.

Cách duy nhất là thực hiện bằng cách chạy truy vấn SQL sau

UPDATE core_config_data SET value = 0 WHERE path = "dev/template/allow_symlink";

Làm rõ

Trước tiên, tôi thực sự khuyên bạn nên kiểm tra hai bài đăng đó sẽ giúp bạn hiểu mục đích của việc sửa đổi Symlink đó:

Sửa đổi này thực sự là về việc gọi nội dung có thể tải lên (như hình ảnh) thông qua các chỉ thị mẫu.

Vấn đề liên quan đến symlink chỉ có thể khai thác khi có quyền truy cập của quản trị viên và Magento đã thêm một số bảo vệ khác xung quanh việc tải lên hình ảnh.

Xin lưu ý rằng chúng là một số biện pháp bảo vệ chống lại cách đã biết để khai thác nó ngoài cài đặt.

Phải làm gì : nếu như tôi, bạn đang sử dụng modman hoặc nhà soạn nhạc với các liên kết mẫu, bạn sẽ gặp một số vấn đề. Tôi vẫn đang cố gắng tìm hiểu điều gì là tốt nhất để làm ở đây ngoài việc xử lý các truy vấn SQL.

Bài đăng chính liên quan đến vấn đề này: SUPEE-9767, modman và symlinks

Danh sách các vấn đề có thể

V2 đã được phát hành kể từ bài gốc. Đừng quên nâng cấp

Lỗi

Từ 'xác nhận' được sử dụng cho các lỗi đã được xác nhận. Nếu nó không có ở đó, điều đó có nghĩa là nó có thể là một lỗi nhưng chưa được xác nhận.

Vấn đề Hunk thất bại

Lưu ý rằng tất cả những vấn đề đó có thể chỉ đơn giản là vì bạn đã sửa đổi tệp gốc, để kiểm tra kỹ xem đây có phải là trường hợp không:

  • Sao lưu tệp mà bạn gặp lỗi Hunk Fails
  • Tải xuống tệp gốc từ phiên bản Magento của bạn
  • So sánh cả hai tập tin

Nếu các tệp khác nhau, bạn sẽ phải áp dụng bản vá với tệp gốc, sau đó áp dụng lại tùy chỉnh của bạn thay đổi theo cách sạch sẽ, chẳng hạn như:

  • mẫu tùy chỉnh trong một thư mục chủ đề tùy chỉnh
  • local.xml
  • ứng dụng / mã / tập tin cục bộ

Nếu các tệp không khác nhau thì đây là sự cố về quyền hoặc "lỗi" trong bản vá.


1
@Icon không. Để kiểm tra lại, hãy sử dụng công cụ mà tôi đã tham khảo ở đầu câu trả lời của mình
Raphael tại Digital Pianism

1
chỉ để thêm vào danh sách "các vấn đề khác": có vẻ như magento.stackexchange.com/questions/167616/iêu cũng không được sửa trong phiên bản mới nhất
Anton Boritskiy

1
@RaphaelatDigitalPianism: magento.stackexchange.com/q/177560/51361

1
Một bổ sung khác vào danh sách: bản vá phá vỡ nhiều phần cho chủ đề mặc định magento.stackexchange.com/questions/177681/ mẹo
Aad Mathijssen

1
'Watermark lấy nền đen khi trong suốt' - có thể xác nhận cái này là chính xác. Điều này xảy ra khi bạn tải lên bất kỳ png trong suốt nào tính bằng cms
pixiemedia

42

Vấn đề1: form_key không hợp lệ khi thanh toán onepage

Magento thêm form_keyvào hầu hết các hình thức.

nếu bạn có using default onepage and using custom theme, thì bạn sẽ bắt đầu gặp form_keyvấn đề ** khi thanh toán từng bước **;

bạn nên thêm khóa biểu mẫu tại <?php echo $this->getBlockHtml('formkey') ?>

để hình thành từng tệp bước thanh toán nếu bên dưới các tệp thoát ra,

  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/billing.phtml
  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/payment.phtml
  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/shipping.phtml

  • app/design/frontend/[Your_Package]/[YOUR_THEME]/template/checkout/onepage/shipping_method.phtml

nếu các tệp mẫu đang gọi từ chủ đề cơ sở thì nó không tạo ra vấn đề. Bởi vì bản vá sẽ tự động cập nhật những tập tin đó.

Cũng lưu ý: <?php echo $this->getBlockHtml('formkey') ?>phải luôn luôn bên trong thẻ mẫu

 <form action="" .....>
     <fieldset>
      .......
       <?php echo $this->getBlockHtml('formkey') ?>
     </fieldset>
 </form>

** Nếu bạn sử dụng thanh toán đa vận chuyển Magento thì cần phải thực hiện tại

tập tin dưới đây:

Vấn đề2: vấn đề form_key đối với biểu mẫu ước tính Giao hàng tại trang giỏ hàng:

Thêm form_key tại biểu mẫu giao hàng ước tính tại trang giỏ hàng

Sau đó phải thêm khóa biểu mẫu <?php echo $this->getBlockHtml('formkey') ?>

tại app/design/frontend/{Your_Package}/{YOUR_THEME]/template/checkout/cart/shipping.phtml

Vấn đề3: Lỗi kiểm tra Magento onepage opcheckout.js

Nếu bạn sử dụng kiểm tra onepage mặc địnhopcheckout.js sau đó nên kiểm tra

if (elements[i].name=='payment[method]' || elements[i].name == 'form_key') {có sẵn tại opcheckout.js

Nếu không thoát thì thay thế

if (yếu tố [i] .name == 'thanh toán [phương thức]') {

với

if (yếu tố [i] .name == 'thanh toán [phương thức]' | | yếu tố [i] .name == 'form_key') {

Đối với trường hợp của vấn đề1, vấn đề2, vấn đề 3, Sự cố có thể khắc phục dễ dàng bằng cách sử dụng tập lệnh của @FabianSchmengler add-checkout-form-key.sh . Nó sẽ khắc phục vấn đề trên các tập tin chủ đề tiếp nhận của bạn

Vấn đề4: Khóa biểu mẫu không hợp lệ sau khi khách hàng đăng nhập khi Mage_Customer_Model_Session viết lại

Nếu Mage_Customer_Model_Sessionlớp viết lại hoặc đã gọi từ

app/code/local/Mage/Customer/Model/Session.phpsau đó bạn có thể gặp sự cố form_key khi chúng tôi đặt khách hàng cho phiên sử dụng setCustomerAsLoggedIn()/ hoặc sau khi khách hàng đặt tại phiên.

Trong trường hợp này, bạn phải thêm

Mage :: getSingleton ('lõi / phiên') -> refreshFormKey ();

tại setCustomerAsLoggedIn () trước cuộc gọi của

Mage::dispatchEvent('customer_login', array('customer'=>$customer));

  public function setCustomerAsLoggedIn($customer)
    {
        $this->setCustomer($customer);
        $this->renewSession();
        // add this  for patch -9767
        Mage::getSingleton('core/session')->renewFormKey();
       // end this for patch 9767
        Mage::dispatchEvent('customer_login', array('customer'=>$customer));
        return $this;
    }

Vấn đề5: Sự cố Form_key sau khi đăng xuất

Sau khi đăng xuất khách hàng từ phiên , bạn có thể bắt đầu sự cố phiên nếu Nếu Mage_Customer_Model_Sessionlớp viết lại hoặc đã gọi từ

app/code/local/Mage/Customer/Model/Session.php

Trong những trường hợp tương tự cho trường hợp này:

   protected function _logout()
    {
        $this->setId(null);
        $this->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
        $this->getCookie()->delete($this->getSessionName());
// add this  for patch -9767
Mage::getSingleton('core/session')->renewFormKey();
        return $this;
    }

Sự giới thiệu:

Khuyến nghị1 : Để khắc phục sự cố của supee-9767 , bạn có thể sử dụng bản vá https://github.com/experius/Magento-1-Experius-Patch-Helper

Đây là một giải pháp tốt nhất cho bây giờ.

Lưu ý , trước khi làm điều đó tôi thực sự khuyên bạn nên sao lưu tệp và cơ sở dữ liệu hoặc sao lưu toàn bộ hệ thống.


Khuyến nghị2: Sử dụng tính năng vá trên KIỂM TRA ONESTEP của bạn

Chúng tôi biết rằng bản vá supee-9767 được phát hành cho mục đích bảo mật, nếu bạn sử dụng KIỂM TRA ONESTEP thì bạn nên thêm xác thực form_key để SAVE hành động của bộ điều khiển kiểm tra trực tuyến của bạn .

Giả sử để lưu chi tiết phương thức giao hàng, thanh toán onestep của bạn đã sử dụng saveShippingmethod () Sau đó, bạn nên thêm điều này

if ($this->isFormkeyValidationOnCheckoutEnabled() && !$this->_validateFormKey()) {
           return;
      }

Ngoài ra, bạn phải thêm khóa biểu mẫu <?php echo $this->getBlockHtml('formkey') ?> vào phần tương ứng với các tệp phtml kiểm tra của bạn

Một số liên kết liên quan

https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/


1
Một lớp lót đẹp và nhanh chóng để tìm các tệp mẫu tùy chỉnh của bạn cho khóa biểu mẫu khi thanh toán; tìm ứng dụng / thiết kế / frontend | grep -E "thanh toán / onepage / (thanh toán | thanh toán | vận chuyển | vận chuyển_method) .phtml" | grep -v "cơ sở / mặc định" | grep -v "rwd / default"
Peter Jaap Blaakmeer

6
hoặc cập nhật chúng ngay lập tức với một lớp lót dài hơn một chút: gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b
Fabian Schmengler

đó là phép thuật @FabianSchmengler !!! :)
Amit Bera

@FabianSchmengler tuyệt vời, đã làm việc!
Peter Jaap Blaakmeer

1
@AmitBera FYI: một số plugin thanh toán sử dụng AJAX để gửi thanh toán / giao hàng / v.v. Tôi chỉ phải vá một cái. Cách dễ dàng để thực hiện là đặt <script> var formKey = "<? Php echo Mage :: getSingleton ('core / session') -> getFormKey ();?>"; </ script> vào đầu chủ đề. Sau đó, bạn có thể thêm form_key: formKey làm tham số để gửi AJAX. Tất nhiên kiểm tra các biểu mẫu sau để xác nhận việc gửi tham số mới và chỉnh sửa Trình điều khiển để xử lý nó như bạn đã đề cập trong bài đăng của mình.
Kalvin Klien

26

Dựa trên thẻ đầu tiên của tôi khi xem xét tệp vá ...

  • Một thiết lập mới admin/security/validate_formkey_checkoutđã được thêm vào. Khi được bật, biểu mẫu thanh toán được kiểm tra sự hiện diện của khóa biểu mẫu. Nếu các tệp mẫu bị ghi đè trong chủ đề, chúng sẽ cần được cập nhật ở đó. Cài đặt này dường như bị tắt theo mặc định
  • Symlinks dường như không được phép theo mặc định (in app/etc/config.xml). Ngoài ra, khả năng cho phép chúng dường như đã bị xóa khỏi cấu hình quản trị viên. Tuy nhiên, nếu trang web của bạn trước đây đã bật các liên kết tượng trưng rõ ràng, cài đặt sẽ được lưu trong cơ sở dữ liệu, ghi đè thay đổi này.
  • Bạn cần xóa cả bộ đệm VÀ bộ đệm toàn bộ trang khi áp dụng bản vá này. Các ngoại lệ thiết kế được lưu trong một định dạng không tương thích với giải mã. Bạn sẽ thấy một lỗi như thế này "Giải mã thất bại: Lỗi cú pháp" nếu bạn không xóa bộ đệm trang.

1
Bạn cũng có thể chỉ cần vào một trình soạn thảo hex và tự thêm nó vào cơ sở dữ liệu, nhưng điều đó có thể hơi nhiều đối với hầu hết mọi người
con mèo

1
Nếu một số bạn đang sử dụng CDN, như cloudflare, hãy đảm bảo xóa bộ nhớ cache. Tôi đã cố gắng kiểm tra nhanh hơn với CDN đang hoạt động và nó sẽ không đi qua trang Thanh toán. Khoảnh khắc tôi xóa bộ nhớ cache và bật chế độ Phát triển, tất cả đều hoạt động tốt.
Biểu tượng

14

base/defaultTệp bên dưới bị ảnh hưởng với bản vá này, nếu tệp này nằm trong chủ đề của bạn thì vui lòng thực hiện thay đổi cho phù hợp

app/design/frontend/base/default/template/checkout/cart/shipping.phtml

app/design/frontend/base/default/template/checkout/multishipping/billing.phtml

app/design/frontend/base/default/template/checkout/multishipping/shipping.phtml

app/design/frontend/base/default/template/checkout/onepage/billing.phtml

app/design/frontend/base/default/template/checkout/onepage/payment.phtml

app/design/frontend/base/default/template/checkout/onepage/shipping.phtml

app/design/frontend/base/default/template/checkout/onepage/shipping_method.phtml

app/design/frontend/base/default/template/persistent/checkout/onepage/billing.phtml

trong tất cả phtmlcác tệp ở trên, dòng khóa mẫu được thêm vào, vì vậy vui lòng thêm dòng này vào tệp phtml tương ứng của bạn.

 <?php echo $this->getBlockHtml('formkey') ?>

Đối với vấn đề trên @fabian đã tạo một tập lệnh sẽ thêm khóa biểu mẫu ngay cả trong tệp chủ đề của bạn

https://gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b

Sau khi áp dụng bản vá bảo mật nếu bạn gặp lỗi cho khóa biểu mẫu, bạn có thể áp dụng bản vá này, vì áp dụng quy trình vá này cũng giống như bản vá bảo mật

  sh filename.sh

và một base/defaultthay đổi trong Jstập tin

  skin/frontend/base/default/js/opcheckout.js

Vì vậy, nếu jstệp này đang tải từ chủ đề của bạn thì hãy thực hiện các bước dưới đây

loại bỏ dòng thổi

 if (elements[i].name=='payment[method]') {

và thêm dòng dưới đây thay vì ở trên

 if (elements[i].name=='payment[method]' || elements[i].name == 'form_key') {

BIÊN TẬP

Và nếu bạn đang sử dụng bất kỳ tiện ích mở rộng thanh toán nào ghi đè bên dưới các tệp thì hãy thêm dòng khóa biểu mẫu vào tệp phtml của tiện ích thanh toán.

EDIT2 - Các vấn đề

1) Lỗi tại saveBillingAction () hoặc nhận khóa biểu mẫu null Hoặc sự cố Khóa biểu mẫu: Bản vá 9767 nhận Khóa biểu mẫu không hợp lệ

2) Hunk # 1 FAILED tại 225. 1 trong tổng số 1 hunk FAILED - tiết kiệm từ chối nộp ứng dụng / thiết kế / frontend / doanh nghiệp / default / template / dai dẳng / kiểm tra / onepage / billing.phtml: SUPEE-9767 - Hunk # 1 FAILED ở 225. 1 trên 1 hunk FAILED

3) lưu từ chối vào tệp ứng dụng / mã / lõi / Doanh nghiệp / PageCache / Model / Observer.php.rej: SUPEE-9767 LRI: Không thể áp dụng / hoàn nguyên bản vá

4) SUPEE-9767, modman và symlink: SUPEE-9767, modman và symlink

5) ứng dụng / thiết kế / frontend / rwd / default / layout / page.xml Hunk # 1 FAILED ở 36. Hunk # 2 FAILED ở 54. 2 trong số 2 hunk FAILED: SUPEE-9767 Error

6) 1 trên 1 hunk FAILED - lưu từ chối vào tệp ứng dụng / mã / lõi / Pháp sư / Bán hàng / Mô hình / Trích dẫn / Mục.php: Magento 1.9.2.2 SUPEE-9767 Patch ERROR

7) lỗi kiểm tra onestep (một lần nữa, đây là vấn đề về khóa biểu mẫu): SUPEE-9767 Magento CE 1.9.3.3 Onestep Checkout không hoạt động với Xác thực khóa biểu mẫu khi bật Checkout

8) Vấn đề đăng ký khách hàng kiểm tra một bước: SUPEE-9767 Patch / CE 1.9.3.3 - Thanh toán một trang - Vấn đề đăng ký khách hàng

9) ứng dụng / mã / lõi / Mage / Core / Model / File / Trình xác thực / Image.php: Magento SUPEE 9697 1.9.2.2 không thành công tại Image.php


1
Phiên bản 2 của bản vá sẽ sớm được cung cấp. Lỗi nên được sửa.
Biểu tượng

1
@icon đang chờ v2
Murtuza Zabuawala

9

Lưu ý rằng Symlinks luôn bị tắt theo mặc định trên cài đặt Magento mới, quản trị viên CÓ / KHÔNG có giá trị cấu hình mặc định là 'NO'. Bản cập nhật hiện vô hiệu hóa các liên kết tượng trưng trong config.xml và như một biện pháp phòng ngừa bổ sung cũng loại bỏ phần mẫu khỏi admin-> nhà phát triển có chứa tùy chọn cấu hình.

Điều này sẽ không ảnh hưởng đến cài đặt liên kết tượng trưng hiện tại của bạn, nếu bạn bật thủ công các liên kết tượng trưng trước 1.9.3.2, chúng sẽ vẫn được bật, mặc dù bạn không thể thấy cài đặt này nữa trong quản trị viên.

Người dùng sử dụng modman để quản lý các mô-đun Magento 1.x phải đảm bảo rằng họ không tắt các liên kết tượng trưng vì điều này sẽ vô hiệu hóa các mô-đun modman.

Quản trị viêntrách nhiệm có thể kích hoạt lại phần quản trị symlink bằng cách tìm kiếm các thay đổi khác nhau cho phần mẫu trong ứng dụng / code / core / Mage / Core / etc / system.xml và thêm phần đó vào system.xml của bạn ở khoảng dòng 600. Hoặc kiểm tra liên kết đôi vẫn được kích hoạt với

n98-magerun.phar config: kết xuất | liên kết grep

Dưới đây là tệp diff cho magento1933 và magento1932 để hỗ trợ xác định các thay đổi trong chủ đề mặc định có thể ảnh hưởng đến các chủ đề tùy chỉnh / mở rộng của bạn.

diff -r magento1933 magento1932> https://pastebin.com/ADzMBLhr


Tại sao họ lại loại bỏ tùy chọn Symlinks?, Bây giờ có một khai thác mở cho công chúng (bên ngoài người dùng quản trị viên) hay nó chỉ là một rủi ro nếu trên môi trường dùng chung?
Lúa

chủ đề này dường như trả lời câu hỏi của tôi: magento.stackexchange.com/questions/176952/iêu
PaddyD

Symlinks bị vô hiệu hóa vì một lý do. Tôi đề nghị sao chép thay vì symlink: magento.stackexchange.com/a/177149/54863
Barryvdh

9

Vấn đề: Sử dụng php7 đôi khi gây ra lỗi sau:

Decoding failed: Syntax error

#0 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(179): Zend_Json::decode('')
#1 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(215): Enterprise_PageCache_Model_Observer->_loadDesignExceptions()
#2 /______/app/code/core/Enterprise/PageCache/Model/Observer.php(125): Enterprise_PageCache_Model_Observer->_saveDesignException()
#3 /______/app/code/core/Mage/Core/Model/App.php(1358): Enterprise_PageCache_Model_Observer->cacheResponse(Object(Varien_Event_Observer))
#4 /______/app/code/core/Mage/Core/Model/App.php(1337): Mage_Core_Model_App->_callObserverMethod(Object({custom extensio}_Model_Rewrite_PageCache_Observer), 'cacheResponse', Object(Varien_Event_Observer))
#5 /______/app/Mage.php(456): Mage_Core_Model_App->dispatchEvent('controller_fron...', Array)
#6 /______/app/code/core/Mage/Core/Controller/Varien/Front.php(182): Mage::dispatchEvent('controller_fron...', Array)
#7 /______/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#8 /______/app/Mage.php(691): Mage_Core_Model_App->run(Array)
#9 /______/index.php(105): Mage::run('brandfield_nl', 'store')
#10 {main}

Nó khá chắc chắn rằng phiên bản Zend phải làm một cái gì đó với nó. Một sửa chữa nhanh là thế này nhưng chắc chắn là không chính xác:

-> ứng dụng / mã / lõi / Doanh nghiệp / PageCache / Model / Observer.php: 244 thay thế nó bằng:

    if ($cachedSslOffloaderHeader !== false) {
        $cachedSslOffloaderHeader = trim(@Zend_Json::decode($cachedSslOffloaderHeader));
    }

-> và ứng dụng / mã / lõi / Doanh nghiệp / PageCache / Model / Observer.php: 177 với:

    if ($exceptions !== false) {
        $exceptions = Zend_Json::decode($exceptions);
    }

Tất nhiên tạo ra một addon để viết lại này. Nhưng tôi chắc chắn có một cái gì đó tốt hơn để được thực hiện ở đây.

CẬP NHẬT (Giải pháp tốt hơn)

-> Truy cập: lib / Zend / Json.php và sau dòng 76 thêm phần này:

    if ((float)phpversion() >= 7.0
        && empty($encodedValue)
    ) {
        return null;
    }

Tạo tiện ích mở rộng của bạn để ghi đè lên nó và không chỉnh sửa tệp lõi.


Cache đã bị xóa hoàn toàn. Đây không phải là vấn đề tương tự.
folektoras133

2
Chúng tôi gặp vấn đề tương tự - hoàn nguyên ứng dụng / mã / lõi / Doanh nghiệp / PageCache / Model / Observer.php đã khắc phục sự cố, nhưng rõ ràng đó không phải là cách khắc phục chính xác, chỉ là phòng ngừa a:5:{i:0;s:29:"Decoding failed: Syntax error";i:1;s:1376:"#0 app/code/core/Enterprise/PageCache/Model/Observer.php(177): Zend_Json::decode('a:0:{}')
Judder

9

Vấn đề: Mã động hoặc css vô hiệu hóa yếu tố đầu vào khóa khi thanh toán

Một vấn đề tôi đã thấy là mã động (paypal plus) trong quy trình thanh toán một trang sẽ ghi đè phần tử fieldset trong phương thức thanh toán một bước dưới dạng html - xóa hoặc vô hiệu hóa (với css) phần tử form_key ẩn.

Cách khắc phục là để đảm bảo phần tử formkey không bị vô hiệu hóa bởi bất kỳ mã động hoặc css nào. Di chuyển mã formkey bên ngoài phần tử fieldset cũng có thể giúp

<form>
    <?php echo $this->getBlockHtml('formkey') ?>
    <fieldset>
        <?php echo $this->getChildHtml('methods') ?>
    </fieldset>
</form>

Bạn có thể dễ dàng xác nhận nếu form_key đang được phát hiện và gửi đến bộ điều khiển một trang bằng cách kiểm tra các yêu cầu mạng ajax trong trình duyệt của bạn khi bạn di chuyển qua các phương thức thanh toán, mỗi phương thức sẽ bao gồm khóa biểu mẫu trong dữ liệu biểu mẫu ajax, nếu biểu mẫu không có khóa nhưng mã nguồn Magento đã được vá kiểm tra mã bên ngoài ảnh hưởng đến thành phần khóa biểu mẫu, tức là thay đổi phía máy khách css hoặc động.

nhập mô tả hình ảnh ở đây


2
Một chút sửa chữa này dường như không hiệu quả với tôi với EE. Tôi thấy rằng tệp cũng app/design/frontend/[package]/[theme]/template/giftcardaccount/onepage/payment/scripts.phtml cần được cập nhật: Các dòng 35-38 cần được cập nhật để bao gồm || elements[i].name == 'form_key'cùng với các bộ chọn khác để giữ trường biểu mẫu form_key bị vô hiệu hóa.
Greg Nickoloff

Cảm ơn g-man1066! Đó chính xác là vấn đề tôi gặp phải.
grafikchaos

9

Vấn đề: Thiếu các bản sửa lỗi trong head-simple.phtml

app/design/adminhtml/default/default/template/oauth/authorize/head-simple.phtml

cần sửa chữa tương tự như

app/design/adminhtml/default/default/template/page/head.phtml

Đối với những người tìm kiếm, sửa chữa đó là; github.com/nathandcornell/magento-patches/blob/
Khăn

8

VẤN ĐỀ: Đăng ký khách hàng không thành công khi sử dụng kiểm tra Magento 5 bước chung.

Vấn đề này chỉ được trình bày khi chúng tôi ENABLE xác thực khóa mẫu. Phiên bản được sử dụng: 1.7.0.2, nhưng có vẻ như ai đó đã đăng vấn đề tương tự cũng xảy ra trên phiên bản 1.9.3. SUPEE-9767 Patch / CE 1.9.3.3 - Thanh toán một trang - Vấn đề đăng ký khách hàng

Khi đi thanh toán, chúng tôi được cung cấp 2 tùy chọn: KIỂM TRA NHƯ HƯỚNG DẪN HOẶC ĐĂNG KÝ Sau khi nhấp vào "Đăng ký" và điền vào biểu mẫu cùng với mật khẩu, bạn tiến hành throguh tất cả các bước và hoàn tất đơn hàng. Đặt hàng được đặt, NHƯNG khách hàng không bao giờ được đăng ký trong magento. Có vẻ như Khách đã đặt hàng.

Khi tôi quay trở lại và Disabled khóa xác minh hình thức, và cố gắng đặt hàng khi đăng ký là khách hàng, nó đã đặt mà không cần bất kỳ vấn đề và các khách hàng đã đăng ký trong backend.


1
Dưới đây là một bài viết chi tiết hơn về vấn đề này magento.stackexchange.com/questions/177035/NH
Raphael tại Digital Pianism

8

CẬP NHẬT 13/07/2017 [VẤN ĐỀ CỐ ĐỊNH]

Nhóm Magento đã phát hành SUPEE-9767 V2 trong phiên bản vá lỗi này với lỗi gif trong suốt và png đã được sửa.

Bạn nên hoàn nguyên tất cả các thay đổi đối với tệp đã được thảo luận trong chuỗi này. Sau đó hoàn nguyên bản vá V1 được áp dụng và cuối cùng áp dụng phiên bản mới V2.


TRƯỚC - SUPEE-9767 V2

Vui lòng không sử dụng mã được thảo luận dưới đây thay vào đó áp dụng V2 của bản vá, vấn đề được thảo luận dưới đây đã được khắc phục trong phiên bản này

Nếu ai đó gặp sự cố với png trong suốt mà khi tải lên từ bảng quản trị, nền sẽ chuyển sang màu đen. (Trên các sản phẩm) liên quan đến cuộc gọi lại Tải lên hình ảnh được giới thiệu trong:

app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php

Hiện tại tôi không chắc chính xác điều gì gây ra hành vi này nhưng tôi đang cố gắng tìm ra tôi có thể xác nhận rằng khi cuộc gọi lại bị xóa, hành vi lạ sẽ biến mất.

nhập mô tả hình ảnh ở đây

CẬP NHẬT

Ok, tôi đã tìm thấy chức năng cũng được cập nhật từ SUPEE-9767, điều này thực sự phá vỡ tính minh bạch trong png, một bản sao của hình ảnh gốc được tạo ra mà không trong suốt.

+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -87,10 +87,33 @@ public function setAllowedImageTypes(array $imageFileExtensions = array())
      */
     public function validate($filePath)
     {
-        $fileInfo = getimagesize($filePath);
-        if (is_array($fileInfo) and isset($fileInfo[2])) {
-            if ($this->isImageType($fileInfo[2])) {
-                return null;
+        list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
+        if ($fileType) {
+            if ($this->isImageType($fileType)) {
+                //replace tmp image with re-sampled copy to exclude images with malicious data
+                $image = imagecreatefromstring(file_get_contents($filePath));
+                if ($image !== false) {
+                    $img = imagecreatetruecolor($imageWidth, $imageHeight);
+                    imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
+                    switch ($fileType) {
+                        case IMAGETYPE_GIF:
+                            imagegif($img, $filePath);
+                            break;
+                        case IMAGETYPE_JPEG:
+                            imagejpeg($img, $filePath, 100);
+                            break;
+                        case IMAGETYPE_PNG:
+                            imagepng($img, $filePath);
+                            break;
+                        default:
+                            return;
+                    }
+                    imagedestroy($img);
+                    imagedestroy($image);
+                    return null;
+                } else {
+                    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
+                }
             }
         }
         throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));

CẬP NHẬT

Đây là phiên bản cập nhật của chức năng để duy trì tính minh bạch của png

  imagealphablending($img, false);
  imagesavealpha($img, true);

hai dòng này cần được thêm vào bản vá. Cập nhật chức năng trongapp/code/core/Mage/Core/Model/File/Validator/Image.php

/**
 * Validation callback for checking is file is image
 *
 * @param  string $filePath Path to temporary uploaded file
 * @return null
 * @throws Mage_Core_Exception
 */
public function validate($filePath)
{
    list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
    if ($fileType) {
        if ($this->isImageType($fileType)) {
            //replace tmp image with re-sampled copy to exclude images with malicious data
            $image = imagecreatefromstring(file_get_contents($filePath));
            if ($image !== false) {
                $img = imagecreatetruecolor($imageWidth, $imageHeight);
                imagealphablending($img, false);
                imagesavealpha($img, true);  
                imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                switch ($fileType) {
                    case IMAGETYPE_GIF:
                        imagegif($img, $filePath);
                        break;
                    case IMAGETYPE_JPEG:
                        imagejpeg($img, $filePath, 100);
                        break;
                    case IMAGETYPE_PNG:
                        imagepng($img, $filePath);
                        break;
                    default:
                        return;
                }
                imagedestroy($img);
                imagedestroy($image);
                return null;
            } else {
                throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
            }
        }
    }
    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}

CẬP NHẬT 23/06/17

Phiên bản cập nhật này của chức năng sửa lỗi trong suốt PNG và GIF.

    /**
 * Validation callback for checking is file is image
 *
 * @param  string $filePath Path to temporary uploaded file
 * @return null
 * @throws Mage_Core_Exception
 */
public function validate($filePath)
{
    list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
    if ($fileType) {
        if ($this->isImageType($fileType)) {
            //replace tmp image with re-sampled copy to exclude images with malicious data
            $image = imagecreatefromstring(file_get_contents($filePath));
            if ($image !== false) {
                $img = imagecreatetruecolor($imageWidth, $imageHeight);
                switch ($fileType) {
                    case IMAGETYPE_GIF:
                        imagecolortransparent($img, imagecolorallocatealpha($img, 0, 0, 0, 127));
                        imagealphablending($img, false);
                        imagesavealpha($img, true);
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagegif($img, $filePath);
                        break;
                    case IMAGETYPE_JPEG:
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagejpeg($img, $filePath, 100);
                        break;
                    case IMAGETYPE_PNG:
                        imagealphablending($img, false);
                        imagesavealpha($img, true);  
                        imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
                        imagepng($img, $filePath);
                        break;
                    default:
                        return;
                }
                imagedestroy($img);
                imagedestroy($image);
                return null;
            } else {
                throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
            }
        }
    }
    throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}

1
Điều này đã giải quyết vấn đề của tôi trong bản cài đặt Magento 1.7. Cảm ơn!
Tjitse

Không có vấn đề gì, Tjitse chỉ cần ghi chú về sự thay đổi này trong trường hợp nhóm Magento không sửa bản vá, bạn sẽ phải hoàn nguyên nó khi bạn thực hiện bản vá tiếp theo. Tôi đã gửi vấn đề đến cộng đồng tại bugcrowd.com với hy vọng họ sẽ giới thiệu bản sửa lỗi sớm.
Daniel Yovchev

cái này không sửa nó cho pngs, nhưng không phải cho các tập tin gif trong suốt. Các tập tin gif cần xử lý hơi khác bằng cách sử dụng fantecolortransparent
thay thế vào

Cảm ơn bạn đã chỉ ra điều này thay thế xem chức năng cập nhật cũng sửa lỗi trong suốt gif.
Daniel Yovchev

7

Vấn đề: Cho phép thông báo symlink không hiển thị cho quản trị viên

Thông báo liên kết tượng trưng sẽ không được hiển thị trong khu vực thông báo của quản trị viên vì nó không được bao gồm trong <block type="core/text_list" name="notifications" as="notifications">

Bản vá cho cả CE và EE dưới đây:

--- app/design/adminhtml/default/default/layout/main.xml
+++ app/design/adminhtml/default/default/layout/main.xml
@@ -119,7 +119,8 @@ Default layout, loads most of the pages
<block type="adminhtml/cache_notifications" name="cache_notifications" template="system/cache/notifications.phtml"></block>
<block type="adminhtml/notification_survey" name="notification_survey" template="notification/survey.phtml"/>
<block type="adminhtml/notification_security" name="notification_security" as="notification_security" template="notification/security.phtml"></block>
-            </block>
+                <block type="adminhtml/checkout_formkey" name="checkout_formkey" as="checkout_formkey" template="notification/formkey.phtml"/></block>
+                <block type="adminhtml/notification_symlink" name="notification_symlink" template="notification/symlink.phtml"/>
<block type="adminhtml/widget_breadcrumbs" name="breadcrumbs" as="breadcrumbs"></block>
<!--<update handle="formkey"/> this won't work, see the try/catch and a jammed exception in Mage_Core_Model_Layout::createBlock() -->

Vấn đề là </block>ở cuối checkout_formkey(tự chấm dứt) và do đó đóng cửa cha mẹ notifications. Điều này gây ra notification_symlinkkhông được bao gồm trong core/text_listvà không được kết xuất.


Đây không thực sự là một vấn đề, thông báo đã bị xóa vì các liên kết tượng trưng đã bị vô hiệu hóa rõ ràng và phần cấu hình symlink bị xóa. Không thể thay đổi thủ công giá trị symlink trong quản trị viên trong v1933, do đó hiển thị thông báo quản trị viên là khá vô nghĩa. Vấn đề sẽ xảy ra đối với các bản cài đặt mới năm 1933, trong đó người dùng yêu cầu symlink tức là cho modman không còn có thể kích hoạt thủ công nữa. Người ta có thể suy luận rằng Magento không mong đợi bất kỳ cài đặt 1.x mới nào ...
pyjama

Tôi không đồng ý, bản vá này không vô hiệu hóa cấu hình nếu nó đã được đặt - nó chỉ vô hiệu hóa nếu nó chưa được đặt. Do đó, nếu một cá thể có dev / template / allow_symlink được đặt thành có trong DB / local.xml trước bản vá này và họ áp dụng bản vá mà họ NÊN nhận được cảnh báo rằng các liên kết tượng trưng được cho phép vì chúng có khả năng bị tổn thương.
mwylde

Tôi thấy quan điểm của bạn, và bạn đã đúng. Nhưng đối với người dùng bình thường thì họ sẽ làm gì - không thể vô hiệu hóa thủ công khỏi quản trị viên vì tùy chọn cấu hình đã bị xóa. Đó là một chút của một tình huống 22 ...
lót

7

Mẹo nhỏ cho #patchday; sau khi sao chép 1.9.3.3 qua cài đặt của bạn, hãy chạy git diff -w --stat | grep -v " 2 +" | grep -v " 0"để nhanh chóng thấy các thay đổi lớn hơn trong tệp.


7

Vấn đề: Mẫu vận chuyển EE không được vá

Tôi đã vá một bản cài đặt EE 1.13.1.0 và mẫu vận chuyển doanh nghiệp ( app/design/frontend/enterprise/default/template/checkout/onepage/shipping.phtml) không có thêm formkey, nhưng các mẫu thanh toán và thanh toán đã làm.

app/design/frontend/base/default/template/checkout/onepage/shipping.phtml đã được vá.


Tôi cũng cần (đối với EE 1.14.2) để thêm form_key vào /app/design/frontend/enterprise/default/template... .../checkout/cart/coupon.phtml,.../giftcardaccount/cart/block.phtml .../giftcardaccount/cart/check.phtml
Greg Nickoloff

4

Có một vấn đề với các phiên bản Magento EE được vá bằng SUPEE-9767 (vì vậy không phải là nâng cấp lên 1.14.3.3). Khóa biểu mẫu trên trang đó sẽ được lưu trữ. Vì vậy, khi tôi xóa bộ nhớ cache và sau đó chuyển đến trang sản phẩm và đảm bảo trang được lưu hoàn toàn vào bộ nhớ cache (làm mới một vài lần), tôi sẽ có thể thêm sản phẩm đó vào giỏ hàng của mình.

Bây giờ, khi tôi mở một trình duyệt khác (hoặc chế độ ẩn danh), hãy mở cùng một trang và thử thêm sản phẩm vào giỏ hàng một lần nữa. Sản phẩm sẽ không được thêm vào giỏ hàng, vì phím mẫu. Bây giờ khi bạn xóa bộ nhớ cache một lần nữa, sản phẩm có thể được thêm vào giỏ hàng một lần nữa.

Cảm ơn Jasper Zeinstra


3

Đối với các nhà phát triển sử dụng Magento Composer Intaller, bạn có thể thay đổi chiến lược triển khai thành Sao chép thay vì Symlink. Bạn cũng có thể định cấu hình để nối các tệp mô-đun vào .gitignore của mình, để kho lưu trữ của bạn sẽ sạch sẽ.

https://github.com/Cotya/magento-composer-installer/blob/master/doc/Deploy.md#deploy-per-copy-instead-of-symlink

{ "extra":{ "magento-root-dir": "htdocs/", "magento-deploystrategy": "copy", "auto-append-gitignore": true } }


Chúng tôi phát hiện ra rằng với bản sao "magento-force": true,trở nên quan trọng
Jeroen


2

Vấn đề: Patch đã hoạt động trên vanilla Magento 1.7.0.0 [đã chỉnh sửa]

Trong quá trình thử nghiệm tập lệnh vá của chúng tôi, chúng tôi đã phát hiện ra một vấn đề trong bản vá cho Magento 1.7.0.0. Không biết có ai còn sử dụng nó không, nhưng dù sao đó cũng là một vấn đề trong SUPEE-9767. Chúng tôi đã sử dụng một cài đặt vanilla và chúng tôi đã cài đặt tất cả các bản vá trước đó trước.

Tệp vá được sử dụng: PATCH_SUPEE-9767_CE_1.7.0.2_v1-2017-05-25-09-31-32.sh Tệp vá không hoạt động cho Magento 1.7.0.1 và 1.7.0.2

Tóm tắt các vấn đề:

ERROR: Patch can't be applied/reverted successfully.
...
can't find file to patch at input line 377
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
|index 7f7b9d0..cbbcbb1 100644
|--- app/code/core/Mage/Core/Model/File/Validator/Image.php
|+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
...
checking file app/code/core/Mage/Sales/Model/Quote/Item.php
Hunk #1 FAILED at 502.
1 out of 1 hunk FAILED
...

Đối với bản ghi, điều này trên 1.7.0.0, chúng tôi đã thử bản vá trên:

$ grep SUPEE app/etc/applied.patches.list
2017-06-01 12:59:49 UTC | SUPEE-2677 | EE_1.13.0.2 | v2 | d20e6763cd0df70c4ac6e418c9775a1ff0f2618f | Tue Jan 14 17:49:25 2014 +0200 | v1.13.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-2629 | EE_1.12.0.0 | v1 | 5de775cf535e137b0b099d8066bd5b3a81f7ec4c | Wed Dec 11 16:50:40 2013 +0200 | v1.12.0.0..HEAD
-e 2017-06-01 12:59:49 UTC | SUPEE-1049 | EE-1.12.0.2 | v1 | 6d06f286f461562fa6d6573349f1491f7bf89859 | Wed Feb 13 17:46:13 2013 -0800 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-1868-1-12-0-2 | EE_1.12.0.2 | v1 | 2148b1b6be28a9bad0bec9a4aecc63ed318dd201 | Fri Jul 26 13:20:27 2013 -0700 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-4334-v1.11.1.0 | EE_1.11.1.0 | v1 | 40f5a2e4db9ca53dc6a8e62eb0c728fd63b1157e | Wed Sep 10 10:42:31 2014 -0700 | ef80f7bff749c941b4d1736cc2b502888e7540c9
2017-06-01 12:59:49 UTC | SUPEE-5345 | EE_1.12.0.2 | v1 | 2d36f61cf684ed26286b6d10307fcb99dd47ff02 | Thu Feb 5 19:39:01 2015 +0200 | v1.12.0.2..HEAD
2017-06-01 12:59:49 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-06-01 12:59:49 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-06-01 12:59:49 UTC | SUPEE-6285 | CE_1.7.0.2 | v1 | 84749c91e14543e1f96af30e86efdf29f4562c98 | Tue Jun 23 09:48:07 2015 +0300 | c6e6cee8eb..84749c91e1
2017-06-01 12:59:49 UTC | SUPEE-6482 | CE_1.8.0.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-06-01 12:59:49 UTC | SUPEE-6788 | CE_1.7.0.1 | v1 | 04d237d56b116989e46839c41691585d927f99db | Fri Oct 23 13:52:50 2015 +0300 | f69136a
2017-06-01 12:59:49 UTC | SUPEE-7616 | CE_1.7.0.2-CE_1.4.2.0 | v1 | a16c51e3679c3f19de6c3207b7a42daa7f9227fc | Fri Dec 18 12:42:03 2015 +0200 | 3617437b6da11be812fcca85f4e6ecbd8b8dc94c..a16c51e3679c3f19de6c3207b7a42daa7f9227fc
2017-06-01 12:59:50 UTC | SUPEE-8788 | CE_1.7.0.0 | v2 | 6b5ef4fc5b09af74d0fd401440948d0a54dd203d | Fri Oct 14 19:27:22 2016 +0300 | 84fa3dd598466fa5c482965a3f8e5395af33bf9d
2017-06-01 12:59:50 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-06-01 12:59:50 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523

4
Nếu bạn thiếu tệp đó, rất có thể bạn chưa áp dụng bản vá bảo mật SUPEE-7405.
Ryan Hoerr

@RyanHoerr bạn nói đúng, SUPEE-7405 đã bị bỏ qua vì tệp chính thức PATCH_SUPEE-7405_CE_1.7.0.2_v1-2016-01-20-04-58-44.shkhông hoạt động cho 1.7.0.0. Tôi đã tạo một phiên bản cố định của tập tin. Nếu ai cần nó, gửi cho tôi một tin nhắn.
Jeroen Vermeulen - Magehost

2

Tôi chỉ phải hoàn nguyên bản vá này do một số hành vi lạ. Vì bất kỳ lý do gì, một số người dùng nhất định không thể thêm các mặt hàng nhất định vào giỏ hàng của họ.

Tôi cho rằng nó có liên quan đến những trích dẫn cũ va chạm với báo giá hiện tại cho khách hàng đó. Tôi đã xác minh sự cố này bằng cách đăng nhập với tư cách người dùng để đảm bảo rằng đó không chỉ là 1D10T.

Đó là một vấn đề kể từ khi tôi lấy cuộc sống vá đó vào thứ Sáu tuần trước. Chúng tôi đang sử dụng 1.14.2.4 . Chúng tôi đã sửa đổi rất nhiều để nó có thể hoạt động tốt cho những người dùng khác. Chỉ là một cảnh báo!


Đó là chính xác, bản vá không phá vỡ thêm vào hành động giỏ hàng cho phiên bản EE của Magento. Về cơ bản, sự cố xảy ra do mô-đun PageCache có một phiên bản logic tạo form_key, trong khi phiên có phiên bản riêng. Khi FPC có phiên bản được lưu trong bộ nhớ cache của trang được yêu cầu, nhưng cần tạo lại minicart, phiên được kích hoạt để tái tạo form_key đồng thời lưu FPC được gọi để tạo form_key của riêng nó. Tại thời điểm đó, giá trị phiên của form_key khác với một tệp được lưu trong cookie của khách hàng (được sử dụng trong bộ xử lý FPC), do đó bạn sẽ nhận được khóa không hợp lệ khi thêm vào bộ điều khiển giỏ hàng.
Stjepan

Tôi cũng gặp phải vấn đề này. Tôi sẽ cho bạn biết nếu tôi tìm thấy một sửa chữa.
cmtickle

Tôi đã giải quyết vấn đề này, giải thích tại đây: magento.stackexchange.com/questions/177942/iêu
cmtickle

Có ai biết nếu điều này được giải quyết trong SUPEE-9767 v2 không?
Đệ tử của một

2

Vấn đề: Vòng lặp chuyển hướng vô hạn trên 1.6.0.0

Khắc phục nhanh

Tìm các dòng dưới đây bên trong hàm được bảo vệ phương thức _checkBaseUrl ($ request) trong ứng dụng tệp / code / core / Mage / Core / Controller / Varien / Front.php

 if (isset($uri['scheme']) && $uri['scheme'] != $request->getScheme()
        || isset($uri['host']) && $uri['host'] != $request->getHttpHost()
        || isset($uri['path']) && strpos($requestUri, $uri['path']) === false
 ) {  

Thay đổi những dòng này thành

 if (isset($uri['host']) && $uri['host'] != $request->getHttpHost()
            || isset($uri['path']) && strpos($requestUri, $uri['path']) === false
 ) { 

Sau đó lưu tệp (cam kết với REPO của bạn), xóa bộ đệm (xóa mọi thứ trong thư mục var / cache) và tải lại phía trước cửa hàng của bạn. Bạn sẽ tìm thấy tải trang mà không gặp sự cố chuyển hướng 302 nữa sau khi áp dụng Bản vá SUPEE 9767.

Nguyên nhân gốc rễ

Sự khác biệt về giá trị SCHEME giữa Yêu cầu thực tế và URI sau khi chuyển hướng. Ví dụ: Yêu cầu thực tế trả về lược đồ HTTP nhưng lược đồ trong URI có thể là HTTPS.

Lý do ngầm có thể

  1. Bạn rất có thể có quy tắc chuyển hướng trong tệp .htaccess để chuyển hướng tất cả các yêu cầu http sang https. Người dùng yêu cầu http://yourdomain.com và bạn có thể đã thay đổi lược đồ và chuyển hướng anh ta thành https: // yourdomain thay vì http://yourdomain.com mà anh ta thực sự đã yêu cầu.

  2. Cả URL an toàn và không an toàn cơ sở đều bắt đầu bằng https


2

BUG CONFIRMED "Đăng ký khách hàng không thành công khi thanh toán" xảy ra một chút khác biệt về phía tôi.

Nếu khách hàng chọn đăng ký thanh toán thì mật khẩu của nó không được lưu trữ chính xác. Khách hàng được tạo chính xác chỉ là mật khẩu không được lưu trữ. Tôi phát hiện ra điều này bởi thực tế là mật khẩu không được hiển thị trong email chào mừng. Mọi người không thể đăng nhập vì điều này quá.

Lỗi được liên kết trong Bản vá SUPEE-9767 / CE 1.9.3.3 - Thanh toán một trang - Vấn đề đăng ký khách hàng cũng đã thực hiện công việc đối với tôi.


2

Ai đó có thể cho tôi biết ... cái này ... là gì trong supee-9767 không?

nhập mô tả hình ảnh ở đây


1
Phiên bản jQuery 1.10.2 được coi là dễ bị tấn công và được gắn cờ bởi một số máy quét PCI. Phiên bản 1.12 thì không.
Ryan Hoerr

@Detzler StackExchange không phải là một diễn đàn. Nếu bạn muốn hỏi một câu hỏi, bạn nên đăng một câu hỏi, không phải là một câu trả lời cho một câu hỏi.
toon81

1
Ryan Hoerr hỏi về bất kỳ vấn đề nào do bản vá mang lại. Vì vậy, tôi đã nói với anh ấy một sự thay đổi có thể phá vỡ như bạn thấy trong ảnh chụp màn hình. Tôi không thể giải thích lý do cho sự thay đổi này. Thế là tôi phụ hỏi. Vậy vấn đề của bạn là gì?
Detzler

2

Bản vá không hoạt động ngay cả đối với vanilla Magento 1.7.0.2.

martins@martinsmac.local:/var/www/magento1702-original$ ./PATCH_SUPEE-9767_CE_1.7.0.2_v1-2017-05-25-09-31-32.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

patching file app/code/core/Mage/Admin/Model/Session.php
Hunk #1 succeeded at 109 (offset -29 lines).
patching file app/code/core/Mage/Adminhtml/Block/Checkout/Formkey.php
patching file app/code/core/Mage/Adminhtml/Block/Notification/Symlink.php
patching file app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php
patching file app/code/core/Mage/Adminhtml/Model/Config/Data.php
patching file app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php
patching file app/code/core/Mage/Checkout/controllers/MultishippingController.php
patching file app/code/core/Mage/Checkout/controllers/OnepageController.php
Hunk #1 succeeded at 293 (offset -34 lines).
Hunk #2 succeeded at 313 (offset -34 lines).
Hunk #3 succeeded at 363 (offset -34 lines).
Hunk #4 succeeded at 392 (offset -34 lines).
Hunk #5 succeeded at 431 (offset -34 lines).
patching file app/code/core/Mage/Checkout/etc/system.xml
patching file app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
patching file app/code/core/Mage/Core/Controller/Front/Action.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 141 (offset -7 lines).
can't find file to patch at input line 377
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
|index 7f7b9d0..cbbcbb1 100644
|--- app/code/core/Mage/Core/Model/File/Validator/Image.php
|+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
patching file app/code/core/Mage/Core/etc/config.xml
patching file app/code/core/Mage/Core/etc/system.xml
patching file app/code/core/Mage/Customer/Model/Session.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Adapter/Zend/Cache.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Container/Abstract.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Parser/Csv.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php
patching file app/code/core/Mage/ImportExport/Model/Import/Uploader.php
patching file app/code/core/Mage/Sales/Model/Quote/Item.php
Hunk #1 FAILED at 502.
1 out of 1 hunk FAILED -- saving rejects to file app/code/core/Mage/Sales/Model/Quote/Item.php.rej
patching file app/code/core/Mage/Widget/Model/Widget/Instance.php
patching file app/code/core/Mage/XmlConnect/Helper/Image.php
patching file app/design/adminhtml/default/default/layout/main.xml
patching file app/design/adminhtml/default/default/template/notification/formkey.phtml
patching file app/design/adminhtml/default/default/template/notification/symlink.phtml
patching file app/design/adminhtml/default/default/template/page/head.phtml
patching file app/design/frontend/base/default/template/checkout/cart/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/multishipping/billing.phtml
patching file app/design/frontend/base/default/template/checkout/multishipping/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/billing.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/payment.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/shipping.phtml
patching file app/design/frontend/base/default/template/checkout/onepage/shipping_method.phtml
patching file app/design/frontend/base/default/template/persistent/checkout/onepage/billing.phtml
patching file app/etc/config.xml
patching file app/locale/en_US/Mage_Adminhtml.csv
patching file app/locale/en_US/Mage_Core.csv
patching file app/locale/en_US/Mage_Dataflow.csv
patching file downloader/Maged/Connect.php
patching file downloader/Maged/Controller.php
Hunk #1 succeeded at 400 (offset -5 lines).
Hunk #2 succeeded at 923 (offset -5 lines).
patching file downloader/Maged/Model/Session.php
Hunk #2 succeeded at 235 with fuzz 2 (offset -13 lines).
patching file js/varien/payment.js
patching file skin/frontend/base/default/js/opcheckout.js

ngay cả sau khi áp dụng các bản vá cũ bằng tay.

$ grep '|' app/etc/applied.patches.list
2017-06-19 04:01:42 UTC | SUPEE-2677 | EE_1.13.0.2 | v2 | d20e6763cd0df70c4ac6e418c9775a1ff0f2618f | Tue Jan 14 17:49:25 2014 +0200 | v1.13.0.2..HEAD
2017-06-19 04:03:26 UTC | SUPEE-2629 | EE_1.12.0.0 | v1 | 5de775cf535e137b0b099d8066bd5b3a81f7ec4c | Wed Dec 11 16:50:40 2013 +0200 | v1.12.0.0..HEAD
2017-06-19 04:04:12 UTC | SUPEE-1049 | EE_1.12.0.2 | v1 | 5cd884653325315804056d4c591572385b3c1d03 | Thu Mar 20 16:33:19 2014 +0200 | v1.12.0.2..HEAD
2017-06-19 04:05:01 UTC | SUPEE-1868-1-12-0-2 | EE_1.12.0.2 | v1 | 2148b1b6be28a9bad0bec9a4aecc63ed318dd201 | Fri Jul 26 13:20:27 2013 -0700 | v1.12.0.2..HEAD
2017-06-19 04:06:38 UTC | SUPEE-4334-v1.11.1.0 | EE_1.11.1.0 | v1 | 40f5a2e4db9ca53dc6a8e62eb0c728fd63b1157e | Wed Sep 10 10:42:31 2014 -0700 | ef80f7bff749c941b4d1736cc2b502888e7540c9
2017-06-19 04:07:10 UTC | SUPEE-1533 | EE_1.12 | v1 | _ | n/a | SUPEE-1533_EE_1.12_v1.patch
2017-06-19 04:08:41 UTC | SUPEE-5345 | EE_1.12.0.2 | v1 | 2d36f61cf684ed26286b6d10307fcb99dd47ff02 | Thu Feb 5 19:39:01 2015 +0200 | v1.12.0.2..HEAD
2017-06-19 04:09:29 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-06-19 04:10:00 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-06-19 04:11:22 UTC | SUPEE-6285 | CE_1.7.0.2 | v1 | 84749c91e14543e1f96af30e86efdf29f4562c98 | Tue Jun 23 09:48:07 2015 +0300 | c6e6cee8eb..84749c91e1
2017-06-19 04:11:50 UTC | SUPEE-6482 | CE_1.8.0.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-06-19 04:12:12 UTC | SUPEE-7616 | CE_1.7.0.2-CE_1.4.2.0 | v1 | a16c51e3679c3f19de6c3207b7a42daa7f9227fc | Fri Dec 18 12:42:03 2015 +0200 | 3617437b6da11be812fcca85f4e6ecbd8b8dc94c..a16c51e3679c3f19de6c3207b7a42daa7f9227fc
2017-06-19 04:14:30 UTC | SUPEE-8167 | EE_1.12.0.2 | v1 | b1be28f9cd8c2ecba2aa403e59ad9e3d2855eb95 | Thu May 4 13:52:13 2017 +0300 | 8d12ea6fe564b6dc9ed1affb6de990f81aca3796..HEAD
2017-06-19 04:16:21 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-06-19 04:16:44 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523
2017-06-19 04:19:35 UTC | SUPEE-6788 | CE_1.7.0.2 | v1 | 0398c4b951d9a0f64495e7b8b3b8ca480952dd70 | Fri Oct 23 13:50:23 2015 +0300 | cfc252b

Giải pháp / vấn đề tôi tìm thấy là một số thay đổi trong bản vá cho 1.7.0.2 dành cho các tệp không tồn tại trước 1.9.2.3. Vì vậy, tôi đã sao chép các tệp sau từ bản cài đặt 1.9.2.3 hoàn toàn mới trước khi chạy tập lệnh vá:

  • ứng dụng / mã / lõi / Mage / Core / Model / File / Trình xác thực / Image.php
  • ứng dụng / mã / lõi / Pháp sư / Bán hàng / Mô hình / Trích dẫn / Mục.php

Bản vá giả định tất cả các bản vá bảo mật khác đã được áp dụng. Các tập tin bạn đang nói về đã được thêm / thay đổi bởi các bản vá trước đó. Bạn đang thiếu ít nhất SUPEE-7405.
Ryan Hoerr

Xin chào Ryan, trên thực tế tôi cũng đã thử áp dụng 7405, nhưng cũng không hoạt động ... $ ./PATCH_SUPEE-7405_CE_1.7.0.2_v1.1-2016-02-23-07-22-52 \ (1) .sh Kiểm tra xem bản vá có thể được áp dụng / hoàn nguyên thành công hay không ... LRI: Bản vá không thể được áp dụng / hoàn nguyên thành công. (..) adminhtml / Helper / Sales.php Hunk # 1 FAILED ở 121. 1 trên 1 hunk FAILED - lưu từ chối vào tệp (..) Tệp vá lỗi adminhtml / Helper / Sales.php.rej (..) / Core / Model / Config.php Hunk # 1 FAILED tại 1642. 1 trong số 1 hunk FAILED - lưu từ chối vào tệp (..) File.php.rej vá tệp (..) / Trích dẫn / Item.php Hunk # 1 FAILED lúc 509 ....
Ricardo Martins

Tài khoản @Ricardo ?
zus

0

Hãy thêm vào https://magento.stackexchange.com/a/176930/46249

Lưu ý rằng Symlinks luôn bị tắt theo mặc định trên cài đặt Magento mới, quản trị viên CÓ / KHÔNG có giá trị cấu hình mặc định là 'NO'. Bản cập nhật hiện vô hiệu hóa các liên kết tượng trưng trong config.xml và như một biện pháp phòng ngừa bổ sung cũng loại bỏ phần mẫu khỏi admin-> nhà phát triển có chứa tùy chọn cấu hình.

Điều này sẽ không ảnh hưởng đến cài đặt liên kết tượng trưng hiện tại của bạn, nếu bạn bật thủ công các liên kết tượng trưng trước 1.9.3.2, chúng sẽ vẫn được bật, mặc dù bạn không thể thấy cài đặt này nữa trong quản trị viên.


Các văn bản in đậm không chính xác. Nếu cập nhật lên 1.9.3.4 (SUPEE-9767 V2) hoặc cài đặt hiện tại mới hơn sẽ bị xóa:

# app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php
$connection->delete(
    $this->getTable('core_config_data'),
    $connection->prepareSqlCondition('path', array(
        'like' => 'dev/template/allow_symlink'
    ))
);

Quản trị viên có trách nhiệm có thể kích hoạt lại phần quản trị symlink bằng cách tìm kiếm các thay đổi khác nhau cho phần mẫu trong ứng dụng / code / core / Mage / Core / etc / system.xml và thêm phần đó vào system.xml của bạn ở khoảng dòng 600. Hoặc kiểm tra liên kết đôi vẫn được kích hoạt với

Chỉ cần làm cho tùy chọn cấu hình hiển thị một lần nữa không giải quyết vấn đề. Tùy chọn hiển thị, nhưng bạn không thể thay đổi cấu hình do mô hình phụ trợ mới được giới thiệu ngăn không lưu giá trị. Xem:

# app/code/core/Mage/Core/etc/system.xml
<backend_model>adminhtml/system_config_backend_symlink</backend_model>

# Mage_Adminhtml_Model_System_Config_Backend_Symlink
public function save()
{
    return $this;
}

Vì vậy, bạn phải xóa hoặc ghi đè mô hình phụ trợ này, xem Cách bật liên kết tượng trưng sau khi cài đặt SUPEE-9767 V2?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.