Security Patch SUPEE-10570 - ปัญหาที่เป็นไปได้หรือไม่


45

Magento เปิดตัวแพตช์รักษาความปลอดภัยใหม่สำหรับ M1 และอัปเดตสำหรับ M1 และ M2

ฉันควรระวังปัญหาอะไรบ้างเมื่ออัปเกรดหรือใช้งานโปรแกรมแก้ไขนี้

สุภี-10570

SUPEE-10570, Magento Commerce 1.14.3.8 และ Open Source 1.9.3.8 มีการปรับปรุงความปลอดภัยหลายอย่างที่ช่วยปิดการเรียกใช้รหัสระยะไกล (RCE) การเขียนสคริปต์ข้ามไซต์ (XSS และปัญหาอื่น ๆ ) การเผยแพร่เหล่านี้ยังรวมถึงการแก้ไขการทำงานขนาดเล็ก บันทึกประจำรุ่น

MAGENTO 2.2.3, 2.1.12 และ 2.0.18 การปรับปรุงความปลอดภัย

Magento Commerce และ Open Source 2.2.3, 2.1.12 และ 2.0.18 มีการปรับปรุงความปลอดภัยหลายอย่างที่ช่วยปิด Cross-Site Scripting (XSS), การรับรองรหัสผู้ใช้ Admin (RCE) และช่องโหว่อื่น ๆ การเผยแพร่รวมถึงการแก้ไขการทำงานเพิ่มเติม หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขการทำงานโปรดตรวจสอบบันทึกประจำรุ่นสำหรับ Magento Commerce 2.0.18, 2.1.12, 2.2.3 และ Magento Open Source 2.0.18, 2.1.12, 2.2.3


1
สำหรับ Open Source / Community Edition 1.x ไม่มีการเปลี่ยนแปลงเทมเพลตส่วนหน้าดังนั้นอย่างน้อยไม่ควรสร้างปัญหามากเกินไป อย่างไรก็ตาม - ขอแนะนำให้สำรองข้อมูลฐานข้อมูลเนื่องจากมีสคริปต์ติดตั้ง (อัพเกรด) สองตัวที่รวมอยู่ในโปรแกรมปรับปรุงนี้ รายละเอียดเพิ่มเติมอาจตามมาหลังจากที่ฉันแก้ไขสภาพแวดล้อมแรก
Christoph Farnleitner

1
หากคุณมีร้านค้าที่ใช้กริด adminhtml ที่กำหนดเองซึ่งมีชื่อร้านค้าตอนนี้แพตช์จะหนีออกมาได้อย่างแน่นอนเพื่อแก้ไขปัญหาที่อาจเกิดขึ้นจากการเปลี่ยนชื่อร้านค้าและการแสดงผล
Andrew Quackenbos

ฉันมีแพทช์ 2 ไซต์ใน 1.9.0.1 แล้วโดยไม่มีปัญหา
asdfasdfasf

1
ฉันใช้ชุดข้อมูลแก้ไขเมื่อวันที่ 1.9.3.0, 1.9.0.1 และ 1.9.1.0 จนถึงตอนนี้ก็ไม่มีปัญหา
David

2
นี่คือจากบล็อกความปลอดภัย: magento.com/security/patches/supee-10570 หมายเหตุ: ลูกค้าบางคนกำลังประสบปัญหาในการชำระเงินเมื่อพยายามสร้างบัญชีขณะเช็คเอาต์ โปรแกรมปรับปรุงหรือวิธีแก้ปัญหาเพื่อแก้ไขปัญหานี้จะสามารถใช้งานได้ในไม่ช้า หากคุณประสบปัญหานี้ในตอนนี้ให้ลองย้อนกลับส่วนของรหัสที่เป็นสาเหตุของปัญหานี้โดยใช้ชุดข้อมูลแก้ไขต่อไปนี้: invalid_sesssion_fix.patch จาก Release Archives ส่วน SUPEE-10570
Tankgirl

คำตอบ:


29

นี่คือรายการของไฟล์ที่ถูกแก้ไขโดยแพตช์ SUPEE-10570:

app/Mage.php 
app/code/core/Mage/Admin/Helper/Data.php
app/code/core/Mage/Admin/Model/Block.php 
app/code/core/Mage/Admin/Model/Resource/Block.php 
app/code/core/Mage/Admin/Model/User.php 
app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php 
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php 
app/code/core/Mage/Adminhtml/Block/Newsletter/Template/Grid/Renderer/Sender.php 
app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php 
app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Info.php 
app/code/core/Mage/Adminhtml/Block/System/Store/Edit/Form.php 
app/code/core/Mage/Adminhtml/Block/Tag/Assigned/Grid.php 
app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Store.php 
app/code/core/Mage/Adminhtml/Block/Widget/Tabs.php 
app/code/core/Mage/Adminhtml/Model/Config/Data.php 
app/code/core/Mage/Adminhtml/Model/System/Store.php 
app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 
app/code/core/Mage/Adminhtml/controllers/CustomerController.php 
app/code/core/Mage/Adminhtml/controllers/System/BackupController.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Core/Model/Variable.php
app/code/core/Mage/Customer/Helper/Data.php
app/code/core/Mage/Customer/Model/Resource/Customer.php
app/code/core/Mage/Customer/controllers/AccountController.php
app/code/core/Mage/Customer/etc/config.xml
app/code/core/Mage/Customer/sql/customer_setup/upgrade-1.6.2.0.1.1.1-1.6.2.0.1.1.2.php
app/code/core/Mage/Downloadable/etc/config.xml
app/code/core/Mage/Downloadable/etc/system.xml
app/code/core/Mage/Downloadable/sql/downloadable_setup/upgrade-1.6.0.0.2.1.1-1.6.0.0.2.1.2.php
app/code/core/Mage/ImportExport/Model/Import.php
app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php
app/code/core/Mage/Shipping/Model/Info.php
app/code/core/Mage/Widget/controllers/Adminhtml/Widget/InstanceController.php
app/design/adminhtml/default/default/template/catalog/product/attribute/set/main.phtml
app/design/adminhtml/default/default/template/customer/tab/view.phtml
app/design/adminhtml/default/default/template/customer/tab/view/sales.phtml
app/design/adminhtml/default/default/template/dashboard/store/switcher.phtml
app/design/adminhtml/default/default/template/downloadable/product/composite/fieldset/downloadable.phtml
app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable/links.phtml
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/creditmemo/name.phtml
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/invoice/name.phtml
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/name.phtml
app/design/adminhtml/default/default/template/newsletter/preview/store.phtml
app/design/adminhtml/default/default/template/report/store/switcher.phtml
app/design/adminhtml/default/default/template/sales/order/view/info.phtml
app/design/adminhtml/default/default/template/store/switcher.phtml
app/design/adminhtml/default/default/template/store/switcher/enhanced.phtml
app/design/adminhtml/default/default/template/system/convert/profile/wizard.phtml
app/design/adminhtml/default/default/template/tax/rate/title.phtml
app/design/adminhtml/default/default/template/widget/form/renderer/fieldset.phtml
app/locale/en_US/Mage_Catalog.csv
app/locale/en_US/Mage_ImportExport.csv
lib/Zend/Mail/Transport/Sendmail.php

แก้ไข

ในที่สุดหลังจากการปรับใช้บนเว็บไซต์ของฉัน (CE 1.7.0.2) ฉันสังเกตเห็นปัญหาการบล็อกที่สำคัญ (กระบวนการเช็คเอาต์ถูกปิดกั้น)

บริบท: หลังจากที่อยู่ขั้นตอนที่ 1 ฉันสร้างและบันทึกลูกค้าโดยตรงเขาควรเห็นขั้นตอนการชำระเงินถัดไปเท่านั้น

ปัญหา: หลังจาก supee-10570 กระบวนการเช็คเอาต์จะหักหลังจากขั้นตอนที่ 1 (ในกรณีที่สร้างบัญชี) และลูกค้าถูกเปลี่ยนเส้นทางไปยังหน้าแรก (ด้วยตะกร้าสินค้าว่างเปล่า + ออกจากระบบตะกร้า) = เป็นไปไม่ได้ที่จะทำการเช็คเอาต์

การแก้ไขฉุกเฉิน: ในกรณีที่คุณพบปัญหาที่คล้ายกันกับการเช็คเอาต์ / ลูกค้าของคุณแสดงความคิดเห็นบรรทัด 414-430 จากแอพ / รหัส / core / Mage / Core / รุ่น / เซสชัน / บทคัดย่อ / Varien.php (คนที่เพิ่มโดยแพทช์ ดูด้านล่าง)

//         if ($this->useValidateSessionPasswordTimestamp()
//             && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
//             && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
//             && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
//             > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
//         ) {
//             return false;
//         }

//         if ($this->useValidateSessionExpire()
//             && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
//             && $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) {
//             return false;
//         } else {
//             $this->_data[self::VALIDATOR_KEY][self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]
//                 = $validatorData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP];
//         }

แก้ไข (2)

ฉันคิดว่าเงื่อนไขต่อไปนี้จะคืนค่าเป็นเท็จเสมอ (Mage_Core_Model_Session_Abstract_Varien ที่บรรทัด 414-419 โดยเฉพาะอย่างยิ่งบรรทัด 417 + 418)

if ($this->useValidateSessionPasswordTimestamp()
            && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
            && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
            && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
        ) {
        return false;

VALIDATOR_PASSWORD_CREATE_TIMESTAMP จะมากกว่า VALIDATOR_SESSION_EXPIRE_TIMESTAMP เสมอ การประทับเวลาของเซสชัน "หมดอายุ" ถูกกำหนดใหม่เมื่อสร้างบัญชีดังนั้นจึงเก่ากว่าเซสชัน init อย่างหลีกเลี่ยงไม่

ตัวอย่างเช่นหากคุณสร้างลูกค้าระหว่างการชำระเงินสิ่งนี้จะส่งคืนค่าเท็จและลูกค้าจะเพิ่งเริ่มต้น (= สิ้นสุดการชำระเงินเปลี่ยนเส้นทางไปยังหน้าแรก & รถเข็นว่างเปล่า) ค่อนข้างแย่

ฉันได้รายงานปัญหานี้ให้ทีมงานคุณภาพเยี่ยม ฉันจะให้ข้อเสนอแนะที่นี่โดยเร็ว


แก้ไข (3)

แพทช์ใหม่เป็น wip (บนหน้าดาวน์โหลดแพทช์ magento มันเขียนว่า "SUPEE-10570 สำหรับ CE 1.7.0.0 - แพทช์อัพเดทที่คาดไว้อย่าใช้ (0.06 MB)"


แก้ไข (4) ~ 1 เดือนหลังจากรายงานปัญหาการบล็อกครั้งแรก

Hi! หวังว่าคุณจะเป็นสินค้าทั้งหมด (และหวังว่าคุณจะไม่ได้รับสถานะแพตช์เริ่มต้นจนถึงตอนนี้เว้นแต่ว่ารายได้ของคุณจะลดลงอย่างจริงจัง ^^)

ฉันสังเกตเห็นประโยคต่อไปนี้จากหน้าอย่างเป็นทางการ: "ตอนนี้วีโอไอพีได้มอบแพตช์ที่อัพเดตแล้ว (SUPEE-10570v2) ซึ่งไม่ทำให้เกิดปัญหานี้อีกต่อไปหมายเหตุอย่างไรก็ตามแพทช์ใหม่นี้ไม่ได้ป้องกันเซสชันที่มีความเสี่ยงต่ำอีกต่อไป ปัญหาด้านความปลอดภัยที่แพทช์ SUPEE-10570 ป้องกัน " จากหน้า supee-10570 อย่างเป็นทางการ

ในหน้าการเปิดตัวในที่สุดเราสามารถหาไฟล์ v2 (PATCH_SUPEE-10570_CE_v1.7.0.2_v2-2018-03-29-08-52-37.sh)

ฉันตรวจสอบการแก้ไขโดยละเอียด ในที่สุดดูเหมือนว่าทีมวีโอไอพีจะตัดสินใจทิ้งส่วนรักษาความปลอดภัยของแพทช์ หวังว่าช่องโหว่นี้จะไม่ก่อให้เกิดความเสียหายร้ายแรง

หลังจาก revert v1 + ใช้ v2 โปรดดูแลไฟล์ต่อไปนี้จะถูกเปลี่ยนกลับเป็นสถานะเริ่มต้น (ก่อนที่จะใช้ v1):

app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Customer/controllers/AccountController.php
app/code/core/Mage/Customer/Helper/Data.php
app/code/core/Mage/Customer/Model/Resource/Customer.php

PS: เห็นได้ชัดว่ามีบางไฟล์อื่น ๆ ที่มีการแก้ไขโปรดตรวจสอบตาม


1
@Icon: ฉันเพิ่งรายงานข้อผิดพลาดนี้ไปยังวีโอไอพี ฉันจะเผยแพร่คำตอบทันทีที่ฉันได้รับข้อเสนอแนะอย่างเป็นทางการ
DarkCowboy

4
@Icon / Soleil: น่าเสียดายที่ยังไม่มีคำตอบอย่างเป็นทางการหรือแก้ไขเกี่ยวกับคำขอแก้ไขข้อผิดพลาดของฉัน
DarkCowboy

1
@DarkCowboy ฉันเพิ่งสังเกตเห็นว่าเมื่อคุณไปที่หน้าดาวน์โหลดแพทช์คุณจะเห็นทีม Magento เพิ่มบันทึกใน 1.7.0.0 และ 1.7.0.2 patch ดูเหมือนว่าแพทช์ใหม่กำลังจะมาถึง
ไอคอน

3
สวัสดีทุกคน. ฉันเห็นแพทช์ใหม่ได้รับการเพิ่ม ("PATCH_SUPEE-10570_CE_v1.7.0.2_v1-2018-02-28-04-54-53.sh") คุณสามารถเห็นความแตกต่างได้ที่นี่ (บานหน้าต่างด้านซ้ายเป็นที่ 1 แพทช์ "PATCH_SUPEE-10570_CE_v1.7.0.2_v1-2018-02-23-06-28-18.sh"): diffchecker.com/uGON91aR ดังนั้นไม่มีการแก้ไขในแพทช์ใหม่! นอกจากนี้การแจ้งเตือน "... แพตช์ที่อัปเดตที่คาดหวังอย่าใช้" หายไป ดังนั้นฉันค่อนข้างสับสนว่าทีมหลักของวีโอไอพีกำลังทำอะไรกับปัญหานี้
DarkCowboy

1
FYI, V2 ของแพตช์ยังแสดงรายการ "SUPEE-10570_CE_v1.9.2.4 | CE_1.9.2.4 | v1" ในapp/etc/applied.patches.list
Moose

9

(ไม่แน่ใจว่านี่เป็นบันทึกประจำรุ่นตั้งแต่ต้นหรือไม่)

ปัญหาที่ทราบ

ปัญหาที่ทราบสองประการเหล่านี้เกี่ยวข้องกับการใช้แท็ก HTML ภายในแอตทริบิวต์ SKU ของผลิตภัณฑ์:

  • หากคุณพยายามนำเข้าผลิตภัณฑ์ที่มีแท็ก HTML ในแอตทริบิวต์ SKU Magento จะแสดงข้อผิดพลาดนี้ในขั้นตอนการตรวจสอบความถูกต้องของข้อมูล (นั่นคือเมื่อคุณคลิกตรวจสอบข้อมูล ):
 Invalid value in SKU column. HTML tags are not allowed.
  • หากคุณพยายามสร้างหรือแก้ไขผลิตภัณฑ์ในแผงควบคุมระบบและค่าแอตทริบิวต์ SKU ของผลิตภัณฑ์มีแท็ก HTML วีโอไอพีจะแสดงข้อผิดพลาดนี้เมื่อคุณพยายามบันทึกผลิตภัณฑ์: HTML tags are not allowed in SKU attribute.

จากหมายเหตุการแก้ไข :

หากแพทช์ไม่สามารถใช้งานได้ในขณะทำการแพตช์lib/Zend/Mail/Transport/Sendmail.phpอาจหมายความว่าการติดตั้ง Magento ของคุณได้รับการติดตั้งด้วย SUPEE-9652v1 ก่อนหน้านี้แทน SUPEE-9652v2 วิธีแก้ปัญหาที่แนะนำคือเปลี่ยนแพทช์ SUPEE-9652v1 และใช้ SUPEE-9652v2 ก่อนที่จะใช้ SUPEE-10570


7

ฉันมีปัญหาเช่นเดียวกับ @DarkCowboy หลังจากใช้แผ่นแปะกับ Magento CE 1.7.0.2

หลังจากเลือกที่จะลงทะเบียนเป็นลูกค้าใหม่ในระหว่างการชำระเงินการวางคำสั่งซื้อจะสร้างทั้งคำสั่งซื้อและลูกค้า แต่แทนที่จะแสดงหน้าผลสำเร็จของคำสั่งซื้อฉันได้เปลี่ยนเส้นทางไปยังหน้าแรกและออกจากระบบ

app/code/core/Mage/Core/Model/Session/Abstract/Varien.phpวิธีการแก้ปัญหาที่ผมพบคือการกลับคำสั่งของบล็อกรหัสในการเปลี่ยนแปลงไป

เมื่อเปรียบเทียบกับรุ่นที่ได้รับการปรับปรุงด้วยไฟล์เดียวกันใน Magento CE 1.9.3.8 ฉันพบบล็อกใหม่เพื่อตรวจสอบการหมดอายุของเซสชันและการประทับเวลารหัสผ่านในลำดับที่แตกต่างกัน

Magento CE 1.9.3.8 - สาย 476-491:

    if ($this->useValidateSessionExpire()
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) {
        return false;
    } else {
        $this->_data[self::VALIDATOR_KEY][self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]
            = $validatorData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP];
    }
    if ($this->useValidateSessionPasswordTimestamp()
        && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
        > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
    ) {
        return false;
    }

Magento CE 1.7.0.2 - สาย 414-430:

    if ($this->useValidateSessionPasswordTimestamp()
        && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
        > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
    ) {
        return false;
    }

    if ($this->useValidateSessionExpire()
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) {
        return false;
    } else {
        $this->_data[self::VALIDATOR_KEY][self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]
            = $validatorData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP];
    }

สิ่งนี้ส่งผลให้คุณค่าของ$validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]การเป็นมากกว่า$sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()หมายถึงวิธีการส่งกลับเท็จและการตรวจสอบล้มเหลวเสมอ

การเปลี่ยนรหัสใน Magento CE 1.7.0.2 เพื่อให้ตรงกับรุ่นใน Magento CE 1.9.3.8 ช่วยแก้ไขปัญหา

โค้ดผลลัพธ์สำหรับ Magento CE 1.7.0.2 - บรรทัด 414-430:


    if ($this->useValidateSessionExpire()
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) {
        return false;
    } else {
        $this->_data[self::VALIDATOR_KEY][self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP]
            = $validatorData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP];
    }
    if ($this->useValidateSessionPasswordTimestamp()
        && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
        && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
        && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
        > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
    ) {
        return false;
    }

ฉันขอแนะนำให้สร้างไฟล์แพตช์ของคุณเองและนำไปใช้กับไฟล์หลักโดยตรง สิ่งนี้จะทำให้ง่ายต่อการย้อนกลับหาก Magento ออกแพทช์เวอร์ชั่น 2


สวัสดีเดฟ ดูเหมือนว่าคุณจะพบปัญหาเดียวกันกับฉัน เกี่ยวกับการแก้ไขของคุณด้วยการกลับของคุณเงื่อนไขที่สองจะไม่ถูกทดสอบเลย ... ฉันจะตรวจสอบข้อมูลเซสชันเหล่านี้
DarkCowboy

4
อัปเดตสำหรับ 1.7.0.2 คาดว่ากลางเดือนมีนาคม (v2 ของแพตช์) ปัญหาได้รับการยืนยัน
Piotr Kaminski

มีใครทดสอบหรือไม่ว่าโซลูชันนี้ช่วยให้การตรวจสอบการเปลี่ยนรหัสผ่านใช้งานได้จริงหรือไม่ หมายเหตุ: หากคุณไม่สนใจเกี่ยวกับผลประโยชน์การรักษาความปลอดภัยที่คุณสามารถปิดการใช้งานเพียงแค่การประทับเวลาการเปลี่ยนรหัสผ่านการตรวจสอบ alltogether โดยมี ผลตอบแทนuseValidateSessionPasswordTimestamp() false(การเปลี่ยนแปลงหนึ่งบรรทัดในไฟล์เดียวกัน)
Eric Seastrand

สวัสดี เราได้ประเมินแล้วว่าปัญหา "การเปลี่ยนเส้นทางพร้อมตะกร้าสินค้าว่างเปล่า" ยังคงมีอยู่ตามลำดับการตรวจสอบที่เปลี่ยนแปลง เราปิดการใช้งาน "useValidateSessionPasswordTimestamp" จนกระทั่งวีโอไอพีสร้างการอัปเดต
Steven Fritzsche

6

เราเห็นหน้าว่างที่ / checkout / รถเข็นหลังจากสมัคร SUPEE-10570 และรวบรวม เพียงเพื่อชี้แจง: ด้วยการปิดการใช้งานคอมไพเลอร์ทุกอย่างเป็นไปด้วยดีด้วยคอมไพเลอร์ที่เปิดใช้งานเราจะเห็นหน้ารถเข็นเปล่าเมื่อล็อกอินโดยไม่มีรายการบันทึกใด ๆ (แม้หลังจากเปิดใช้งานบันทึกและโหมดนักพัฒนาที่เป็นไปได้ทั้งหมด)

การแก้ปัญหาคือการปรับเปลี่ยนฟังก์ชั่นgetPasswordTimestamp()ในapp/code/core/Mage/Customer/Helper/Data.php(แน่นอนหมายถึง: app/code/local/Mage/Customer/Helper/Data.php!) และใช้งานMage::getSingleton('core/resource')แทนหรือMage::getModel('customer/customer') Mage::getSingleton('customer/session')ดังนั้นแทนที่ฟังก์ชั่นทั้งหมดเช่นด้วยบรรทัดของรหัสเหล่านี้:

    $resource = Mage::getSingleton('core/resource');
    $readConnection = $resource->getConnection('core_read');
    $query = 'SELECT * FROM ' . $resource->getTableName('customer_entity').' WHERE `entity_id` = '.$customerId;
    $results = $readConnection->fetchAll($query);
    $result=$results[0];
    $date_created = Varien_Date::toTimestamp($result['created_at']);
    return $date_created;

หลังจากปัญหาการรวบรวมซ้ำได้หายไป ใครที่มีปัญหานี้

คำอธิบายในภาษาที่นี่


นี่คือวิธีที่แตกต่างกันในคำแนะนำและรหัสที่แย่ที่สุดที่เคยเห็นที่นี่ โปรดอย่าทำสิ่งนี้ที่บ้าน
pong

เหมือนกันกับฉัน แพ็ตช์นี้ไม่ทำงานเมื่อเปิดใช้งานคอมไพเลอร์
Rafael Patro

ใน 1.9.3.9 มันใช้งานได้ดีสำหรับฉัน
TonkBerlin

4

1.7.0.0

ปะ: PATCH_SUPEE-10570_CE_v1.7.0.0_v1-2018-02-23-06-37-58.sh

ข้อผิดพลาดนี้เกิดขึ้นหากคุณไม่ได้ใช้ SUPEE-9652 หรือ SUPEE-9767 ก่อนหน้านี้

patching file lib/Zend/Mail/Transport/Sendmail.php
Hunk #1 FAILED at 119.
Hunk #2 FAILED at 130.

ใช้โปรแกรมแก้ไขเหล่านั้นเพื่อแก้ไขปัญหา


2
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง 9652 และ 9767
ไอคอน

อันที่จริงเราทดสอบ SUPEE-10570 สำหรับทุกรุ่นของ Vanilla Magento ตั้งแต่ 1.6.0.0 และใช้งานได้จริง แต่ถ้าคุณใช้แพทช์ก่อนหน้านี้ทั้งหมด คุณสามารถค้นหาแพตช์ที่ต้องการได้ที่นี่: docs.google.co.th/spreadsheets/d/…
Jeroen Vermeulen - MageHost

4

1.7.0.0

PATCH_SUPEE-10570_CE_v1.7.0.0_v1-2018-02-23-06-37-58.sh ไฟล์Patchapp/code/core/Mage/Core/Model/Session/Abstract/Varien.php

แพตช์ 1.7.0.0 เพิ่มค่าคงที่เพียงอันเดียวเท่านั้น:

+    const VALIDATOR_PASSWORD_CREATE_TIMESTAMP   = 'password_create_timestamp';

อย่างไรก็ตามมันเพิ่มการใช้ค่าคงที่ใหม่สองค่าโดยเฉพาะค่านี้:

+        if ($this->useValidateSessionPasswordTimestamp()
+            && isset($validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP])
+            && isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
+            && $validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
+            > $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
+        ) {
+            return false;
+        }

สิ่งนี้ส่งผลให้เกิดข้อผิดพลาด:

PHP Fatal error:  Uncaught Error: Undefined class constant 'VALIDATOR_SESSION_EXPIRE_TIMESTAMP' in 
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:406
Stack trace:
#0 
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php(358): Mage_Core_Model_Session_Abstract_Varien->_validate()
#1 
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php(176): Mage_Core_Model_Session_Abstract_Varien->validate()
#2 
app/code/core/Mage/Core/Model/Session/Abstract.php(84): Mage_Core_Model_Session_Abstract_Varien->init('core', 'frontend')
#3 
app/code/core/Mage/Core/Model/Session.php(42): Mage_Core_Model_Session_Abstract->init('core', 'frontend')
#4 
app/code/core/Mage/Core/Model/Config.php(1354): Mage_Core_Model_Session->__construct(Array)

การแก้ไข:

เพิ่มคำจำกัดความสำหรับค่าคงที่ที่สองนี้สูงกว่าหรือต่ำกว่าค่าคงที่แรกที่เพิ่มโดยแพตช์นี้

const VALIDATOR_SESSION_EXPIRE_TIMESTAMP = 'session_expire_timestamp';

จนถึงตอนนี้ฉันยังไม่เห็นปัญหานี้ใน 1.9 ใด ๆ หรือ 1.14.x แพตช์เพราะพวกเขากำหนดค่าคงที่ได้อย่างถูกต้อง


สิ่งนี้ได้รับการแพตช์โดยการเพิ่มconst VALIDATOR_SESSION_EXPIRE_TIMESTAMP = 'session_expire_timestamp';ลงในส่วนบนของไฟล์เช่นเดียวกับที่ทำในแพทช์รุ่นอื่น ๆ ส่วนใหญ่
Tyler V.

ดูเหมือนว่าจะเฉพาะเจาะจงกับแพทช์ 1.7.0.0
danmentzer

Tyler คุณสามารถเพิ่มการแก้ไขให้กับคำตอบจริงของคุณได้มากกว่าส่วนความคิดเห็น
danmentzer

1
นอกจากนี้ฉันเพิ่งจะทราบว่านี่ยังมีผลกระทบแพทช์สำหรับรุ่น EE ของแพทช์เช่นกัน EE 1.12.0.0
danmentzer

3

สิ่งแรกที่คุณควรตรวจสอบถ้าคุณเคยใช้รุ่นที่ถูกต้องของ SUPEE-6788 หรือ SUPEE-7405 ถ้าไม่เปลี่ยนกลับรุ่นที่ไม่ถูกต้องแล้วใช้รุ่นที่ถูกต้องของ SUPEE-6788 / SUPEE-7405

จากนั้นลองอีกครั้งเพื่อใช้ SUPEE-10570


2

ไฟล์ด้านล่างนี้ได้รับการอัพเดท / เพิ่มหลังจากใช้ patch ของ SUPEE - 10570 ในEE

@DarkCowboy จัดทำรายการไฟล์อื่นที่ไม่ใช่ไฟล์EEนั้น:

    app/code/core/Enterprise/Cms/Block/Adminhtml/Cms/Hierarchy/Edit/Form.php
    app/code/core/Enterprise/Cms/Block/Adminhtml/Cms/Hierarchy/Widget/Chooser.php
    app/code/core/Enterprise/Cms/Block/Adminhtml/Cms/Page/Edit/Tab/Hierarchy.php
    app/code/core/Enterprise/Cms/Block/Hierarchy/Menu.php
    app/code/core/Enterprise/Customer/Block/Adminhtml/Customer/Attribute/Edit/Tab/Main.php
    app/code/core/Enterprise/GiftRegistry/Model/Observer.php
    app/code/core/Enterprise/Reward/Block/Adminhtml/Customer/Edit/Tab/Reward/Management/Update.php
    app/code/core/Enterprise/Rma/Model/Shipping/Info.php
    app/code/core/Enterprise/Staging/Block/Adminhtml/Backup/Grid.php
    app/code/core/Enterprise/Staging/Block/Adminhtml/Staging/Grid.php
 app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/edit.phtml
    app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/manage.phtml
    app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/scope/switcher.phtml
    app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/widget/radio.phtml
    app/design/adminhtml/default/default/template/enterprise/cms/page/preview/store.phtml
    app/design/adminhtml/default/default/template/enterprise/customer/website/switcher.phtml
    app/design/adminhtml/default/default/template/enterprise/invitation/view/tab/general.phtml
    app/design/adminhtml/default/default/template/enterprise/staging/log/information/create.phtml
    app/design/adminhtml/default/default/template/enterprise/staging/staging/edit/tabs/website.phtml
    app/design/adminhtml/default/default/template/enterprise/staging/staging/edit/tabs/website/store.phtml
    app/design/adminhtml/default/default/template/enterprise/staging/staging/merge/settings/website.phtml
    app/design/adminhtml/default/default/template/enterprise/store/switcher.phtml
    app/design/adminhtml/default/default/template/enterprise/store/switcher/enhanced.phtml
    app/design/adminhtml/default/default/template/merchandiser/new/page/html/top-buttons.phtml
    app/design/frontend/enterprise/default/template/cms/hierarchy/pagination.phtml

หมายเหตุสำคัญบางประการ

password_created_at สร้างขึ้นในตารางแอตทริบิวต์ของลูกค้า

app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Customer/Helper/Data.php
app/code/core/Mage/Customer/Model/Resource/Customer.php
app/code/core/Mage/Customer/controllers/AccountController.php
app/code/core/Mage/Customer/sql/customer_setup/upgrade-1.6.2.0.5.1.1-1.6.2.0.5.1.2.php

เหล่านี้เป็นไฟล์ที่ใช้สำหรับการสร้างและการตรวจสอบ ปัญหาเซสชั่นเกิดขึ้นที่การเช็คเอาต์หรือการตรวจสอบผู้ใช้ไฟล์ใดไฟล์หนึ่งข้างต้นถูกเขียนทับในพูลภายในเครื่องของคุณหรือpassword_created_atแอตทริบิวต์ใด ๆ ที่สร้างขึ้นในตารางแอตทริบิวต์ลูกค้าของคุณและค่าที่เหมาะสมที่เก็บไว้ในตารางนั้น


ฉันไม่พบ password_created_at ในฐานข้อมูล CE ที่ให้ปัญหาด้วย
TonkBerlin

ตรวจสอบไฟล์แอปนี้ / รหัส / core / ผู้วิเศษ / ลูกค้า / sql / customer_setup / upgrade-1.6.2.0.5.1.1-1.6.2.0.5.1.2.php
พระราม Chandran M

2

เวอร์ชั่นวีโอไอพีของฉันคือเวอร์ชั่น 1.9.1.0

เราเห็นหน้าว่างที่ / checkout / รถเข็นหลังจากสมัคร SUPEE-10570 และรวบรวม เพียงเพื่อชี้แจง: ด้วยการปิดการใช้งานคอมไพเลอร์ทุกอย่างเป็นไปด้วยดีด้วยคอมไพเลอร์ที่เปิดใช้งานเราจะเห็นหน้ารถเข็นเปล่าเมื่อล็อกอินโดยไม่มีรายการบันทึกใด ๆ (แม้หลังจากเปิดใช้งานบันทึกและโหมดนักพัฒนาที่เป็นไปได้ทั้งหมด)

สาเหตุ:

  1. ฟังก์ชัน getPasswordTimestamp จะเรียกใช้สองครั้งเมื่อลงชื่อเข้าใช้และไปที่ / checkout / cart

  2. คอมไพเลอร์ปิดการใช้งานทั้งการภาวนา

  3. เปิดใช้งานคอมไพเลอร์เฉพาะงานการขอร้องครั้งแรกการร้องขอครั้งที่สองล้มเหลว

ใครสามารถอธิบายและให้ทางออกที่ดี?


2

ปัญหาเกี่ยวกับ1.7.0.2ฉันได้สังเกตเห็นดังต่อไปนี้:

  1. เพิ่มสินค้าลงตะกร้าแล้วไปที่ชำระเงิน

  2. คลิก "ลงทะเบียน"

  3. กรอกข้อมูลการสั่งซื้อที่จำเป็นทั้งหมดรวมถึงรายละเอียดการชำระเงินและอื่น ๆ
  4. คลิกสั่งซื้อเสร็จสมบูรณ์

ปัญหาเริ่มต้นที่นี่

5. รับการเปลี่ยนเส้นทางไปที่หน้าแรกโดยอัตโนมัติ คุณไม่ได้รับการยืนยันการสั่งซื้อ แต่ในความเป็นจริงแล้วจะมีการสั่งซื้อและสร้างบัญชีลูกค้า


คุณมีวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่? ฉันกำลังเผชิญกับปัญหาเดียวกัน
Parth Thummar

1
V2 ของการแก้ไขแพตช์แก้ไขปัญหา
ไอคอน

2

ฉันพบปัญหาเดียวกัน Magento 1.9.3.8 เพิ่มวิธีนี้ในคลาส Mage_Customer_Helper_Data

/**
 * Get customer password creation timestamp or customer account creation timestamp
 *
 * @param $customerId
 * @return int
 */
public function getPasswordTimestamp($customerId)
{
    /** @var $customer Mage_Customer_Model_Customer */
    $customer = Mage::getModel('customer/customer')
        ->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
        ->load((int)$customerId);
    $passwordCreatedAt = $customer->getPasswordCreatedAt();

    return is_null($passwordCreatedAt) ? $customer->getCreatedAtTimestamp() : $passwordCreatedAt;
}

หากคุณลบล้างคลาสนี้ในโฟลเดอร์ Local (ไม่ใช่วิธีปฏิบัติที่ดีที่สุด) เราอาจมีข้อผิดพลาดเกิดขึ้นจากคลาสนี้


2

ชุดข้อมูลแก้ไขนี้ทำให้ผู้จัดการลำดับชั้น CMS เสียหายสำหรับผู้ใช้ EE

นี่เป็นเพราะบรรทัดการแก้ไขต่อไปนี้ซึ่งรับผิดชอบในการหนีชื่อร้านค้า / เว็บไซต์และแก้ไข APPSEC-1873/1979/1980

diff --git app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/manage.phtml app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/manage.phtml
index e45298c..8bee617 100644
--- app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/manage.phtml
+++ app/design/adminhtml/default/default/template/enterprise/cms/hierarchy/manage.phtml
@@ -36,7 +36,7 @@
             <div class="cms-popup-description"></div>
             <div class="fieldset">
                 <div class="cms-hierarchy manage-form">
-                    <?php echo $this->getFormHtml() ?>
+                    <?php echo $this->escapeHtml($this->getFormHtml()); ?>
                 </div>
             </div>
         </div>

มันควรจะแสดงตัวเลือกร้านค้าทางด้านซ้าย แต่มันจะแสดง html ทางด้านขวาแทน หากคุณต้องการฟังก์ชั่นนี้จริงๆคุณต้องโทรไปหาฟังก์ชั่นความปลอดภัยและฟังก์ชั่นที่ไม่ดี

แสดงลำดับชั้นที่ใช้งานไม่ได้


0

ข้อผิดพลาดที่แน่นอนเหมือนกันกับ Tyler ใน Magento 1.9.2.4 Patch PATCH_SUPEE-10570_CE_v1.9.2.4_v1-2018-02-28-04-53-53.sh

checking file lib/Zend/Mail/Transport/Sendmail.php
Hunk #1 FAILED at 119.
Hunk #2 FAILED at 129.
2 out of 2 hunks FAILED

ตรวจสอบว่าคุณได้ติดตั้งแพตช์ก่อนหน้าแล้ว โดยเฉพาะอย่างยิ่ง 9767 แพทช์
พระราม Chandran M

ตรวจสอบที่ www.magereport.com และยืนยันว่ามีการติดตั้งแพตช์ทั้งหมด 9767
Roy Toledo

ฉันจะตรวจสอบและให้คำตอบ
Rama Chandran M

1
@royToledo ตรวจสอบให้แน่ใจว่าคุณได้ใช้โปรแกรมแก้ไข SUPEE-9652 เช่นกัน
Tyler V.

0

หากคุณมีเครื่องมือตรวจจับโปรแกรมแก้ไขบางตัวคุณอาจต้องแก้ไขการตรวจจับSUPEE-9562 เพราะSUPEE-10570ปรับเปลี่ยนไฟล์เดียวกัน:

lib/Zend/Mail/Transport/Sendmail.php

0

Magento เปลี่ยนแพทช์ได้อย่างเงียบ ๆ แสดงที่นี่พร้อมแพตช์สำหรับ Magento 1.8.1.0-1.9.0.1 ในการดาวน์โหลดครั้งแรกฉันได้รับไฟล์

PATCH_SUPEE-10570_CE_v1.9.0.1_v1-2018-02-23-06-18-06.sh

ไม่กี่วันต่อมาฉันได้รับไฟล์ต่อไปนี้

PATCH_SUPEE-10570_CE_v1.9.0.1_v1-2018-02-28-04-54-29.sh

Diff แสดงว่าไฟล์เก่ามีไฟล์จาก Magento Enterprise Edition ซึ่งมีใบอนุญาตผิด "Magento Enterprise Edition ข้อตกลงสิทธิ์การใช้งานสำหรับผู้ใช้ปลายทาง" สิ่งนี้ได้รับการแก้ไขเป็น "Open Software License (OSL 3.0)"


0

คุณอาจได้รับข้อผิดพลาดดังต่อไปนี้

Hunk #3 FAILED at 17 หลังจากบรรทัด

checking file app/code/core/Enterprise/Cms/Block/Adminhtml/Cms/Page/Edit/Tab/Hierarchy.php

มันเกิดขึ้นกับฉันในเวอร์ชันวีโอไอพี 1.10.0.2EE มันเกิดขึ้นเพราะไม่มีการใช้แพตช์ SUPEE-6285

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.