Patch Keamanan SUPEE-9767 - Kemungkinan masalah?

108

Patch keamanan baru keluar untuk Magento 1, mengatasi 16 masalah APPSEC: https://magento.com/security/patches/supee-9767

Tujuh dari skor kerentanan 8,0 atau lebih tinggi untuk CVSSv3 Severity , dan mereka dieksploitasi di alam liar, jadi ini adalah tambalan kritis. Situs dapat menerapkan SUPEE-9767 , atau memperbarui ke rilis baru CE 1.9.3.3 / EE 1.14.3.3.

Apa masalah umum atau jebakan yang harus diperhatikan saat menerapkan SUPEE-9767?


PEMBARUAN 2017-07-12:

Magento telah merilis SUPEE-9767 V2 dan CE 1.9.3.4 untuk mengatasi banyak masalah dari tambalan awal. Jika Anda menerapkan V1, Anda harus kembali dan kemudian menerapkan V2. Jika Anda belum menambal, cukup terapkan V2, dan sebagian besar masalah yang diangkat di sini tidak akan relevan.

Ryan Hoerr
sumber
"Tujuh dari skor kerentanan 8,0 atau lebih tinggi untuk CVSSv3 Severity, dan mereka dieksploitasi di alam liar, jadi ini adalah tambalan kritis." Saya hanya ingin memeriksa, "penyerang" perlu masuk ke admin untuk melakukan eksploitasi ini?
PaddyD
3
ya, Anda harus memiliki akses admin untuk mengeksploitasi ...
MagenX
Patch tampaknya tidak menghentikan endpoint brute-force yang umum, (yaitu / rss / order / baru) yang tampaknya merupakan cara paling umum para botters berusaha untuk mendapatkan akses ke area admin?
Ricky Odin Matthews
1
Saya menggunakan ini untuk RSS @RickyOdinMatthews di .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 Saya menggunakan nginx, tetapi sudah menggunakan solusi serupa. Saya perhatikan bot biasanya memindai, dan memaksa endpoint ini secara kasar.
Ricky Odin Matthews

Jawaban:

107

Inilah ikhtisar saya tentang tambalan setelah menggali ke dalamnya

SAVER WAKTU : Experius menyediakan penolong tambalan yang membantu Anda menemukan file dalam tema khusus, modul khusus, atau timpa lokal yang juga mungkin perlu ditambal secara manual , Anda dapat menemukannya di sini: https://github.com/experius/Magento- 1-Experius-Patch-Helper # magento

Kunci formulir checkout

Seperti yang dikatakan di posting lain, tambalan ini menambahkan kunci formulir ke formulir berikut:

Bentuk keranjang pengiriman:

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

Formulir checkout penagihan multishipping:

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

Formulir checkout pengiriman multishipping:

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

Formulir checkout alamat multishipping:

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

Formulir checkout penagihan:

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

Formulir checkout pengiriman:

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

Formulir pembayaran checkout:

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

Formulir checkout metode pengiriman:

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

Formulir checkout Penagihan yang persisten:

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

Selain itu, file JS berikut telah diperbarui agar kompatibel dengan perubahan itu:

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

Apa yang harus dilakukan:

Jika Anda menggunakan versi khusus templat tersebut, Anda harus memperbaruinya dengan menambahkan kode berikut ke dalamnya:

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

Jika Anda menggunakan modul checkout pihak ke-3, Anda harus menghubungi mereka sehingga mereka dapat memberikan versi terbaru dari modul mereka.

Juga jika Anda memiliki versi khusus dari file JS yang sebelumnya terdaftar, Anda harus memperbaruinya juga.

HEMAT WAKTU ANDA :

Fabian Schmengler menulis skrip kecil yang bagus untuk memperbarui semua hal untuk Anda, Anda dapat menemukannya di sini:

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

CATATAN PENTING : validasi formkey checkout dapat diubah di backend melalui bidang konfigurasi baru di bawah Sistem> Konfigurasi> Admin> Keamanan> Aktifkan Validasi Kunci Formulir Pada Saat Checkout . INI TIDAK DIMAKSUDKAN OLEH DEFAULT sehingga Anda harus mengaktifkannya untuk mendapatkan manfaat dari fitur keamanan ini !!! Perhatikan bahwa Anda akan mendapatkan pemberitahuan di backend jika tidak diaktifkan.

Unggah panggilan balik gambar

Pengontrol galeri gambar telah diperbarui untuk menambahkan panggilan balik validasi.

Apa yang harus dilakukan

Jika Anda menggunakan modul khusus yang mengunggah gambar dengan kode yang terlihat seperti ini:

        $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);

Saya sangat menyarankan Anda memperbarui kode itu dengan menambahkan bagian berikut setelahnya:

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

Symlinks

Patch ini menghapus bidang konfigurasi sistem yang memungkinkan Anda untuk mengizinkan tautan templat di backend. Dulu berada di bawah System> Configuration> Developer> Template> Allow Symlinks . Sekarang seluruh bagian Templat hilang.

Selain itu, bidang itu sekarang dinonaktifkan secara default melalui app/etc/config.xml

Yang lucu di sini adalah bahwa Anda akan mendapatkan pemberitahuan di backend jika Anda memiliki bidang konfigurasi yang diaktifkan sebelum tambalan tetapi Anda tidak akan dapat menonaktifkannya ketika bidang itu hilang.

Satu-satunya cara melakukannya adalah dengan menjalankan query SQL berikut

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

Klarifikasi

Pertama, saya sangat menyarankan Anda memeriksa dua posting yang akan membantu Anda memahami tujuan modifikasi Symlink:

Modifikasi ini sebenarnya tentang memanggil konten yang dapat diunggah (seperti gambar) melalui arahan template.

Masalah yang terkait dengan symlink hanya dapat dieksploitasi dengan akses admin dan Magento menambahkan beberapa perlindungan di sekitar unggahan gambar.

Harap dicatat bahwa mereka adalah beberapa perlindungan terhadap cara yang diketahui untuk mengeksploitasinya selain pengaturan itu sendiri.

Apa yang harus dilakukan : jika seperti saya, Anda menggunakan modman atau komposer dengan symlink template, Anda akan menghadapi beberapa masalah. Saya masih mencoba mencari tahu apa hal terbaik untuk dilakukan di sini selain berurusan dengan pertanyaan SQL.

Pos utama mengenai masalah ini: SUPEE-9767, modman dan symlinks

Daftar kemungkinan masalah

V2 dirilis sejak posting asli itu. Jangan lupa untuk meningkatkan

Bug

Kata 'dikonfirmasi' digunakan untuk bug yang dikonfirmasi. Jika tidak ada di sana, itu berarti bug tetapi belum dikonfirmasi.

Masalah Gagal Hunk

Perhatikan bahwa semua masalah itu bisa jadi hanya karena Anda memodifikasi file asli, untuk mengecek apakah ini tidak terjadi:

  • Cadangkan file tempat Anda mendapatkan kesalahan Hunk Failed
  • Unduh file asli dari versi Magento Anda
  • Bandingkan kedua file

Jika file berbeda, Anda harus menerapkan tambalan dengan file asli lalu menerapkan kembali kustom Anda dengan cara bersih seperti:

  • template khusus dalam folder tema khusus
  • local.xml
  • aplikasi / kode / file lokal

Jika file tidak berbeda maka ini merupakan masalah izin atau "bug" di tambalan.

Raphael di Digital Pianism
sumber
1
@ Icon nggak. Untuk mengecek gunakan alat yang saya referensikan di bagian atas jawaban saya
Raphael di Digital Pianism
1
hanya untuk menambahkan ke daftar "masalah lain": tampaknya magento.stackexchange.com/questions/167616/… juga tidak diperbaiki dalam versi terbaru
Anton Boritskiy
1
@RaphaelatDigitalPianism: magento.stackexchange.com/q/177560/51361
1
Tambahan lain dari daftar: tambalan memecah multishipping untuk tema default magento.stackexchange.com/questions/177681/…
Aad Mathijssen
1
'Tanda air mendapatkan latar belakang hitam saat transparan' - dapat mengkonfirmasi yang ini benar. Ini terjadi ketika Anda mengunggah png transparan dalam cms
pixiemedia
42

Masalah 1: form_key tidak valid pada checkout onepage

Magento menambahkan form_keypaling banyak formulir.

jika sudah using default onepage and using custom theme, maka Anda akan mulai mendapatkan form_keymasalah ** di checkout setiap langkah **;

Anda harus menambahkan kunci formulir di <?php echo $this->getBlockHtml('formkey') ?>

untuk membentuk setiap file langkah checkout jika file di bawah ini keluar,

  • 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

jika file template memanggil dari tema dasar maka itu tidak menimbulkan masalah. Karena patch akan secara otomatis memperbarui file-file itu.

Perhatikan juga: <?php echo $this->getBlockHtml('formkey') ?>harus selalu di dalam tag formulir

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

** Jika Anda menggunakan checkout multi-pengiriman Magento maka perlu dilakukan pada

file di bawah ini:

Issue2: masalah form_key ke formulir estimasi pengiriman di halaman keranjang:

Tambahkan form_key pada taksiran formulir pengiriman di halaman keranjang

Maka harus menambahkan kunci formulir <?php echo $this->getBlockHtml('formkey') ?>

di app/design/frontend/{Your_Package}/{YOUR_THEME]/template/checkout/cart/shipping.phtml

Issue3: Kesalahan pada checkout checkout di situs Magento

Jika Anda menggunakan checkout onsite default dan opcheckout.js kemudian harus memeriksa

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

Jika tidak keluar maka ganti

if (elemen [i] .name == 'pembayaran [metode]') {

dengan

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

Untuk kasus issue1, issue2, issue3, Issue dapat diperbaiki dengan mudah dengan menggunakan skrip @FabianSchmengler add-checkout-form-key.sh . Ini akan memperbaiki masalah pada file tema reseptif Anda

Masalah4: Kunci formulir tidak valid setelah pelanggan masuk ketika Mage_Customer_Model_Session menulis ulang

Jika Mage_Customer_Model_Sessionkelas menulis ulang atau menelepon dari

app/code/local/Mage/Customer/Model/Session.phpmaka Anda mungkin mendapatkan masalah form_key ketika kami menetapkan pelanggan untuk sesi menggunakan setCustomerAsLoggedIn()/ atau setelah pelanggan ditetapkan pada sesi.

Dalam hal ini, Anda harus menambahkan

Mage :: getSingleton ('core / session') -> renewFormKey ();

di setCustomerAsLoggedIn () sebelum panggilan dari

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;
    }

Iss55: Masalah Form_key setelah logout

Setelah keluar pelanggan dari sesi , Anda mungkin mulai masalah sesi jika Jika Mage_Customer_Model_Sessionkelas menulis ulang atau telah menelepon dari

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

Dalam kebutuhan yang sama untuk kasus ini:

   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;
    }

Rekomendasi:

Rekomendasi1: Untuk memperbaiki masalah supee-9767 , Anda dapat menggunakan tambalan https://github.com/experius/Magento-1-Experius-Patch-Helper

Ini adalah salah satu solusi terbaik untuk saat ini.

Catatan , sebelum melakukan itu saya sangat disarankan untuk mengambil file dan cadangan basis data atau cadangan sistem lengkap.


Rekomendasi2: Gunakan fitur tambalan pada CHECKOUT ONESTEP Anda

Kita tahu bahwa rilis patch supee-9767 untuk tujuan keamanan, jika Anda menggunakan ONESTEP CHECKOUT maka Anda harus menambahkan validasi form_key ke SAVE action controller checkout onestep Anda .

Misalkan untuk menyimpan detail metode pengiriman, checkout onestep Anda menggunakan saveShippingmethod () Maka Anda harus menambahkan ini

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

Juga pada Anda harus menambahkan kunci form <?php echo $this->getBlockHtml('formkey') ?> di checkout Anda masing-masing file phtml checkout

Beberapa tautan terkait

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

Amit Bera
sumber
1
Satu baris yang bagus dan cepat untuk menemukan file templat kustom Anda untuk kunci formulir di checkout; temukan aplikasi / desain / antarmuka | grep -E "checkout / onepage / (penagihan | pembayaran | pengiriman | pengiriman_method) .phtml" | grep -v "base / default" | grep -v "rwd / default"
Peter Jaap Blaakmeer
6
atau perbarui segera dengan liner yang sedikit lebih panjang: gist.github.com/schmengler/c42acc607901a887ef86b4daa7a0445b
Fabian Schmengler
itu adalah sihir @FabianSchmengler !!! :)
Amit Bera
@FabianSchmengler mengagumkan, itu berhasil!
Peter Jaap Blaakmeer
1
@AmitBera FYI: beberapa plugin checkout menggunakan AJAX untuk mengirimkan tagihan / pengiriman / dll. Saya hanya perlu menambal satu. Cara mudah untuk melakukannya adalah dengan meletakkan <script> var formKey = "<? Php echo Mage :: getSingleton ('core / session') -> getFormKey ();?>"; </script> menjadi kepala tema. Kemudian Anda bisa menambahkan form_key: formKey sebagai parameter untuk pengiriman AJAX. Tentu saja uji formulir setelahnya untuk mengonfirmasi pengiriman parameter baru dan edit Pengontrol untuk menanganinya seperti yang Anda sebutkan di posting Anda.
Kalvin Klien
26

Berdasarkan pass pertama saya saat meninjau file patch ...

  • Pengaturan baru admin/security/validate_formkey_checkouttelah ditambahkan. Ketika dinyalakan, formulir checkout diperiksa keberadaan kunci form. Jika file template ditimpa dalam tema mereka harus diperbarui di sana. Pengaturan ini tampaknya tidak aktif secara default
  • Symlink tampaknya tidak diizinkan secara default (dalam app/etc/config.xml). Selain itu, kemampuan untuk mengizinkannya tampaknya telah dihapus dari konfigurasi admin. Namun, jika situs Anda sebelumnya secara eksplisit mengaktifkan symlink, pengaturan akan disimpan dalam database, mengesampingkan perubahan ini.
  • Anda perlu menghapus cache DAN cache halaman penuh saat menerapkan tambalan ini. Pengecualian desain disimpan dalam format yang tidak kompatibel dengan decoding. Anda akan melihat kesalahan seperti ini "Penguraian gagal: Kesalahan sintaks" jika Anda tidak membuka halaman cache.
mpchadwick
sumber
1
Anda juga bisa masuk dengan hex editor dan menambahkannya ke database sendiri, tapi itu mungkin sedikit banyak bagi kebanyakan orang
cat
1
Jika beberapa dari Anda menggunakan CDN, seperti cloudflare, pastikan untuk membersihkan cache. Saya mencoba melalui checkout dengan CDN aktif dan tidak akan melewati halaman Pembayaran. Saat saya membersihkan cache dan mengaktifkan mode Pengembangan, semuanya berjalan baik.
Ikon
14

base/defaultFile di bawah ini terpengaruh dengan tambalan ini, jika file-file ini ada di tema Anda, silakan buat perubahan yang sesuai

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

di semua phtmlfile di atas di bawah form key line ditambahkan jadi tolong tambahkan baris ini di file phtml Anda masing-masing.

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

Untuk masalah di atas @fabian membuat skrip yang akan menambahkan kunci formulir bahkan di file tema Anda

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

setelah menerapkan tambalan keamanan jika Anda mendapatkan kesalahan untuk kunci formulir Anda dapat menerapkan tambalan ini, untuk menerapkan proses tambalan ini sama dengan tambalan keamanan saja

  sh filename.sh

dan satu base/defaultperubahan dalam Jsfile

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

jadi jika jsfile ini diambil dari tema Anda maka lakukan langkah-langkah di bawah ini

menghapus garis pukulan

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

dan tambahkan baris di bawah, bukan di atas

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

SUNTING

Dan jika Anda menggunakan ekstensi checkout apa pun yang menimpa file di bawah ini maka tambahkan baris kunci formulir dalam file phtml ekstensi checkout.

EDIT2 - Masalah

1) Kesalahan pada saveBillingAction () atau mendapatkan kunci formulir nol Atau masalah Kunci Formulir: Patch 9767 mendapatkan Kunci Formulir tidak valid

2) Hunk # 1 GAGAL pada 225. 1 dari 1 hunk GAGAL - menyimpan penolakan untuk mengajukan aplikasi / desain / antarmuka / perusahaan / default / templat / persistent / checkout / onepage / billing.phtml: billing.phtml SUPEE-9767 - Hunk # 1 GAGAL di 225. 1 dari 1 gumpalan GAGAL

3) menyimpan penolakan untuk mengajukan aplikasi / kode / inti / Perusahaan / PageCache / Model / Observer.php.rej: SUPEE-9767 ERROR: Patch tidak dapat diterapkan / dikembalikan dengan sukses

4) SUPEE-9767, modman dan symlinks: SUPEE-9767, modman dan symlinks

5) aplikasi / desain / antarmuka / rwd / default / layout / page.xml Hunk # 1 GAGAL di 36. Hunk # 2 GAGAL di 54. 2 dari 2 bakhil GAGAL: SUPEE-9767 Kesalahan

6) 1 dari 1 sebongkah GAGAL - menyimpan penolakan untuk mengajukan aplikasi / kode / inti / Penyihir / Penjualan / Model / Penawaran / Item.php: Magento 1.9.2.2 SUPEE-9767 Patch ERROR

7) kesalahan checkout onestep (sekali lagi ini adalah masalah kunci formulir): SUPEE-9767 Magento CE 1.9.3.3 Onestep Checkout tidak berfungsi dengan Validasi Kunci Formulir Pada Saat Checkout diaktifkan

8) checkout satu langkah masalah pendaftaran pelanggan: SUPEE-9767 Patch / CE 1.9.3.3 - Satu Halaman Checkout - masalah Registrasi Pelanggan

9) app / code / core / Mage / Core / Model / File / Validator / Image.php: Magento SUPEE 9697 1.9.2.2 gagal di Image.php

Murtuza Zabuawala
sumber
1
Versi 2 dari tambalan harus segera tersedia. Bug harus diperbaiki.
Ikon
1
@icon menunggu v2
Murtuza Zabuawala
9

Perhatikan bahwa Symlink selalu dinonaktifkan secara default pada instalasi Magento baru, admin YA / TIDAK nilai konfigurasi default ke 'TIDAK'. Pembaruan sekarang secara eksplisit menonaktifkan symlink di config.xml dan sebagai tindakan pencegahan tambahan juga menghapus bagian template dari admin-> pengembang yang berisi opsi konfigurasi.

Ini tidak akan mempengaruhi pengaturan symlink Anda saat ini, jika Anda mengaktifkan symlink secara manual sebelum 1.9.3.2 mereka akan tetap diaktifkan, meskipun Anda tidak dapat melihat pengaturan lagi di admin.

Pengguna yang menggunakan modman untuk mengelola modul Magento 1.x harus memastikan bahwa mereka tidak menonaktifkan symlink karena ini akan menonaktifkan modul modman.

Admin yang bertanggung jawab dapat mengaktifkan bagian admin symlink lagi dengan mencari perubahan berbeda pada bagian template di app / code / core / Mage / Core / etc / system.xml dan menambahkan bagian ke system.xml Anda di sekitar baris 600. Atau symlink cek ganda masih diaktifkan dengan

n98-magerun.phar config: dump | grep symlink

Berikut adalah file diff untuk magento1933 dan magento1932 untuk membantu mengidentifikasi perubahan pada tema default yang dapat memengaruhi tema khusus / tambahan Anda.

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

paj
sumber
Mengapa mereka menghapus opsi Symlinks ?, adakah sekarang eksploit terbuka untuk umum (di luar pengguna admin) atau apakah itu hanya risiko jika berada di lingkungan bersama?
PaddyD
utas ini tampaknya menjawab pertanyaan saya: magento.stackexchange.com/questions/176952/…
PaddyD
Symlink dinonaktifkan karena suatu alasan. Saya sarankan untuk menyalin alih-alih symlink: magento.stackexchange.com/a/177149/54863
Barryvdh
9

Masalah: Menggunakan php7 terkadang melempar kesalahan berikut:

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}

Cukup yakin bahwa versi Zend harus melakukan sesuatu dengannya. Perbaikan cepat adalah ini tetapi pasti tidak benar:

-> app / code / core / Enterprise / PageCache / Model / Observer.php: 244 ganti dengan:

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

-> dan aplikasi / kode / inti / Perusahaan / PageCache / Model / Observer.php: 177 dengan:

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

Tentu saja membuat addon untuk menulis ulang ini. Tapi saya yakin ada sesuatu yang lebih baik dilakukan di sini.

UPDATE (Solusi yang lebih baik)

-> Pergi ke: lib / Zend / Json.php dan setelah baris 76 tambahkan ini:

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

Buat ekstensi Anda untuk menimpanya dan jangan mengedit file inti.

folektoras133
sumber
Cache dibersihkan sepenuhnya. Ini bukan masalah yang sama.
folektoras133
2
Kami mengalami masalah yang sama ini - mengembalikan aplikasi / kode / inti / Perusahaan / PageCache / Model / Observer.php menghapus masalah, tapi jelas itu bukan perbaikan yang benar, hanya pencegahan 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

Masalah: Kode dinamis atau css menonaktifkan elemen input kunci di checkout

Masalah yang saya lihat adalah di mana kode dinamis (paypal plus) dalam proses checkout satu halaman menimpa fieldset elemen dalam metode pembayaran satu langkah dari html - menghapus atau menonaktifkan (dengan css) elemen form_key tersembunyi.

Cara mengatasinya adalah memastikan elemen formkey tidak dinonaktifkan oleh kode atau css dinamis apa pun. Memindahkan kode formkey di luar elemen fieldset juga dapat membantu

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

Anda dapat dengan mudah mengkonfirmasi apakah form_key terdeteksi dan dikirim ke satu halaman controller dengan memeriksa permintaan jaringan ajax di browser Anda saat Anda bergerak melalui metode checkout, setiap metode harus menyertakan kunci formulir di data formulir ajax, jika formulir kunci tidak ada tetapi kode sumber Magento telah ditambal memeriksa kode eksternal yang memengaruhi elemen kunci form, yaitu perubahan sisi klien dinamis atau css.

masukkan deskripsi gambar di sini

paj
sumber
2
Perbaikan kecil ini sepertinya tidak bekerja untuk saya dengan EE. Saya menemukan bahwa file tersebut app/design/frontend/[package]/[theme]/template/giftcardaccount/onepage/payment/scripts.phtml perlu diperbarui juga: Baris 35-38 perlu diperbarui untuk menyertakan || elements[i].name == 'form_key'bersama dengan pemilih lainnya untuk menjaga bidang formulir form_key dinonaktifkan.
Greg Nickoloff
Terima kasih g-man1066! Persis itulah masalah yang saya alami.
grafikchaos
9

Masalah: Perbaikan yang tidak ada di head-simple.phtml

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

membutuhkan perbaikan yang sama dengan

app/design/adminhtml/default/default/template/page/head.phtml
William Tran
sumber
Bagi mereka yang mencari, perbaikannya adalah; github.com/nathandcornell/magento-patches/blob/…
Peter Jaap Blaakmeer
8

MASALAH: Registrasi Pelanggan Gagal saat menggunakan checkout 5 langkah Magento generik.

Masalah ini hanya disajikan saat kami MENGAKTIFKAN otentikasi formulir. Versi yang digunakan: 1.7.0.2, tetapi sepertinya seseorang telah memposting masalah yang sama terjadi pada versi 1.9.3 juga. SUPEE-9767 Patch / CE 1.9.3.3 - Satu Halaman Checkout - Masalah Registrasi Pelanggan

Ketika Pergi ke checkout, kami dihadapkan dengan 2 pilihan: CHECKOUT SEBAGAI TAMU ATAU REGISTER Setelah mengklik "Daftar", dan isi formulir bersama dengan kata sandi, Anda melanjutkan throguh semua langkah dan menyelesaikan pesanan. Pesanan ditempatkan, tetapi pelanggan tidak pernah terdaftar di Magento. Sepertinya tamu melakukan pemesanan.

Ketika saya kembali dan Menonaktifkan autentikasi kunci formulir, dan mencoba menempatkan pesanan saat mendaftar sebagai pelanggan, ia ditempatkan tanpa masalah dan pelanggan terdaftar di backend.

Ikon
sumber
1
Berikut ini adalah pos yang lebih terperinci tentang masalah ini magento.stackexchange.com/questions/177035/…
Raphael di Digital Pianism
8

UPDATE 13/07/2017 [MASALAH INI TETAP]

Tim Magento telah merilis SUPEE-9767 V2 dalam versi tambalan ini masalah dengan gif transparan dan png diperbaiki.

Anda harus mengembalikan semua perubahan ke file yang dibahas di utas ini. Kemudian kembalikan patch V1 yang diterapkan dan akhirnya terapkan V2 versi baru.


PRE - SUPEE-9767 V2

Tolong jangan gunakan kode yang dibahas di bawah ini, bukan menerapkan V2 dari patch masalah yang dibahas di bawah ini sudah diperbaiki dalam versi ini

Jika seseorang mengalami masalah dengan png transparan yang ketika diunggah dari panel admin latar belakang menjadi hitam. (Pada produk) terkait dengan panggilan balik Pengunggahan Gambar yang diperkenalkan di:

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

Saat ini saya tidak yakin apa yang sebenarnya menyebabkan perilaku ini, tetapi saya mencoba untuk mengetahuinya saya dapat mengkonfirmasi bahwa ketika callback dihapus perilaku aneh akan hilang.

masukkan deskripsi gambar di sini

MEMPERBARUI

Ok, saya menemukan fungsi yang juga diperbarui dari SUPEE-9767 ini sebenarnya melanggar transparansi dalam png, salinan gambar asli dibuat tanpa transparansi.

+++ 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.'));

MEMPERBARUI

Berikut adalah versi terbaru dari fungsi untuk menjaga transparansi png

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

dua baris ini perlu ditambahkan ke tambalan. Perbarui fungsi diapp/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.'));
}

UPDATE 23/06/17

Versi fungsi yang diperbarui ini memperbaiki transparansi PNG dan 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.'));
}
Daniel Yovchev
sumber
1
Ini memecahkan masalah saya dalam instalasi Magento 1.7. Terima kasih!
Tjitse
Tidak masalah Tjitse hanya membuat catatan tentang perubahan ini jika tim Magento tidak memperbaiki tambalan Anda harus mengembalikannya ketika Anda melakukan tambalan berikutnya. Saya telah mengirimkan masalah ke komunitas di bugcrowd.com berharap mereka akan segera memperkenalkan perbaikan tambalan.
Daniel Yovchev
ini memperbaikinya untuk pngs, tetapi tidak untuk file gif transparan. file gif memerlukan penanganan yang sedikit berbeda menggunakan imagecolortransparan
ubah
Terima kasih telah menunjukkan ini atau melihat fungsi yang diperbarui yang memperbaiki transparansi gif juga.
Daniel Yovchev
7

Masalah: Izinkan pemberitahuan symlink tidak ditampilkan ke admin

Pemberitahuan symlink tidak akan ditampilkan di area pemberitahuan admin karena tidak termasuk dalam <block type="core/text_list" name="notifications" as="notifications">

Patch untuk CE dan EE di bawah ini:

--- 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() -->

Masalahnya adalah </block>pada akhir checkout_formkey(yang mengakhiri diri sendiri) dan karena itu menutup orang tua notifications. Hal ini menyebabkan notification_symlinktidak dimasukkan dalam core/text_listdan tidak akan diberikan.

mungkin
sumber
Ini sebenarnya bukan masalah, notifikasi telah dihapus karena symlinks telah dinonaktifkan secara eksplisit dan bagian conflink conflink dihapus. Tidak mungkin mengubah nilai symlink secara manual di admin di v1933 sehingga menunjukkan pemberitahuan admin agak tidak ada gunanya. Masalahnya adalah instalasi 1933 baru di mana pengguna yang memerlukan symlink yaitu untuk modman tidak lagi dapat mengaktifkannya secara manual. Orang dapat menyimpulkan bahwa Magento tidak mengharapkan instalasi 1.x baru ...
paj
Saya tidak setuju, tambalan ini tidak secara eksplisit menonaktifkan konfigurasi jika sudah diset - hanya menonaktifkannya jika belum disetel. Oleh karena itu jika sebuah instance memiliki dev / template / allow_symlink diatur ke yes di DB / local.xml sebelum patch ini dan mereka menerapkan patch mereka HARUS menerima peringatan bahwa symlink diperbolehkan karena mereka berpotensi rentan.
mwylde
Saya mengerti maksud Anda, dan Anda benar. Tetapi untuk pengguna normal apa yang akan mereka lakukan - tidak mungkin untuk menonaktifkannya secara manual dari admin karena opsi konfigurasi telah dihapus. Ini situasi yang agak sulit ...
paj
7

Sedikit tip untuk #patchday; setelah menyalin 1.9.3.3 di atas instal Anda, jalankan git diff -w --stat | grep -v " 2 +" | grep -v " 0"untuk melihat dengan cepat perubahan yang lebih besar pada file.

Peter Jaap Blaakmeer
sumber
7

Masalah: Template pengiriman EE tidak ditambal

Saya menambal pemasangan EE 1.13.1.0, dan templat pengiriman perusahaan ( app/design/frontend/enterprise/default/template/checkout/onepage/shipping.phtml) tidak memiliki formkey yang ditambahkan, tetapi templat penagihan dan pembayaran melakukannya.

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

Laura
sumber
Saya juga perlu (untuk EE 1.14.2) untuk menambahkan form_key /app/design/frontend/enterprise/default/template... .../checkout/cart/coupon.phtml,.../giftcardaccount/cart/block.phtml .../giftcardaccount/cart/check.phtml
Greg Nickoloff
4

Ada masalah dengan versi Magento EE yang ditambal dengan SUPEE-9767 (jadi tidak dengan pemutakhiran ke 1.14.3.3). Kunci formulir pada halaman itu akan di-cache. Jadi ketika saya membersihkan cache dan kemudian pergi ke halaman produk dan memastikan halaman itu benar-benar di-cache (menyegarkan beberapa kali), saya harus dapat menambahkan produk itu ke troli saya.

Sekarang, ketika saya membuka browser yang berbeda (atau mode penyamaran), buka halaman yang sama dan coba tambahkan produk ke keranjang lagi. Produk tidak akan ditambahkan ke troli, karena kunci formulir. Sekarang ketika Anda membersihkan cache lagi, produk dapat ditambahkan ke keranjang lagi.

Terima kasih kepada Jasper Zeinstra

Arjen Miedema
sumber
3

Untuk pengembang yang menggunakan Magento Composer Intaller, Anda dapat mengubah strategi penyebaran untuk disalin daripada Symlink. Anda juga dapat mengonfigurasi untuk menambahkan file modul ke .gitignore Anda, sehingga repositori Anda akan tetap bersih.

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 } }

Barryvdh
sumber
Kami menemukan bahwa dengan salinan "magento-force": true,menjadi penting
Jeroen
2

Masalah: Patch sedang mengerjakan vanilla Magento 1.7.0.0 [diedit]

Selama pengujian skrip tambalan kami, kami menemukan masalah dalam tambalan untuk Magento 1.7.0.0. Tidak tahu apakah ada yang masih menggunakannya, tapi bagaimanapun itu merupakan masalah di SUPEE-9767. Kami menggunakan instalasi vanilla dan kami menginstal semua tambalan sebelumnya terlebih dahulu.

File patch yang digunakan: PATCH_SUPEE-9767_CE_1.7.0.2_v1-2017-05-25-09-31-32.sh File patch tidak berfungsi untuk Magento 1.7.0.1 dan 1.7.0.2

Ringkasan masalah:

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
...

Sebagai catatan, ini aktif pada 1.7.0.0 kami mencoba tambalan pada:

$ 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
Jeroen Vermeulen - MageHost
sumber
4
Jika Anda kehilangan file itu, kemungkinan besar Anda belum menerapkan patch keamanan SUPEE-7405.
Ryan Hoerr
@RyanHoerr Anda benar, SUPEE-7405 dilewati karena file resmi PATCH_SUPEE-7405_CE_1.7.0.2_v1-2016-01-20-04-58-44.shtidak berfungsi untuk 1.7.0.0. Saya membuat versi file yang diperbaiki. Jika ada yang membutuhkannya, kirim saya pesan.
Jeroen Vermeulen - MageHost
2

Saya hanya harus mengembalikan tambalan ini karena beberapa perilaku aneh. Untuk alasan apa pun, pengguna tertentu tidak dapat menambahkan item tertentu ke troli mereka.

Saya berasumsi itu ada hubungannya dengan kutipan lama yang bertabrakan dengan kutipan saat ini untuk pelanggan itu. Saya memverifikasi masalah ini dengan masuk sebagai pengguna untuk memastikan itu bukan hanya 1D10T.

Sudah menjadi masalah sejak saya mengambil masa tambalan itu Jumat lalu. Kami menggunakan 1.14.2.4 . Kami sangat dimodifikasi sehingga mungkin berfungsi dengan baik untuk pengguna lain. Hanya peringatan!

Murid Satu
sumber
Itu benar, tambalan tidak merusak tindakan add to cart untuk versi EE dari Magento. Pada dasarnya, masalah terjadi karena modul PageCache memiliki satu versi logika generasi form_key, sedangkan sesi memiliki sendiri. Ketika FPC memiliki versi cache dari halaman yang diminta, tetapi perlu membuat ulang minicart, sesi dipicu yang meregenerasi form_key pada saat yang sama FPC save dipanggil yang menghasilkan form_key sendiri. Pada saat itu nilai sesi form_key berbeda dari satu yang disimpan dalam cookie pelanggan (digunakan dalam prosesor FPC) sehingga Anda mendapatkan kunci yang tidak valid saat menambahkan ke pengontrol keranjang.
Stjepan
Saya juga menghadapi masalah ini. Saya akan memberi tahu Anda jika saya menemukan perbaikan.
cmtickle
Saya mengatasi masalah ini, penjelasan di sini: magento.stackexchange.com/questions/177942/…
cmtickle
Adakah yang tahu kalau ini diselesaikan dalam SUPEE-9767 v2?
Murid One
2

Masalah: Infinite redirect loop pada 1.6.0.0

Perbaikan Cepat

Temukan baris-baris di bawah ini di dalam metode fungsi yang dilindungi _checkBaseUrl ($ request) dalam aplikasi file / kode / 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
 ) {  

Ubah baris ini menjadi

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

Setelah itu simpan file (komit ke REPO Anda), kosongkan cache (hapus semua yang ada di dalam folder var / cache) dan muat ulang depan toko Anda. Anda harus menemukan situs memuat tanpa 302 masalah redirect setelah menerapkan Patch SUPEE 9767.

Penyebab utama

Perbedaan dalam nilai SCHEME antara Permintaan aktual dan URI setelah pengalihan. Misalnya: Permintaan aktual mengembalikan skema HTTP tetapi skema dalam URI dapat berupa HTTPS.

Kemungkinan Alasan Mendasari

  1. Kemungkinan besar Anda memiliki aturan pengalihan dalam file .htaccess untuk mengalihkan semua permintaan http ke https. Pengguna meminta http://domainanda.com dan Anda mungkin telah mengubah skema dan mengarahkannya ke https: // domain Anda alih-alih http://domainanda.com yang sebenarnya ia minta.

  2. URL basis aman dan tidak aman dimulai dengan https

Haijerome
sumber
2

BUG YANG DIKONFIRMASI "Registrasi pelanggan gagal saat checkout" terjadi sedikit berbeda di pihak saya.

Jika pelanggan memilih mendaftar di checkout maka kata sandi tidak disimpan dengan benar. Pelanggan dibuat dengan benar hanya kata sandi tidak disimpan. Saya mendeteksi ini oleh fakta bahwa kata sandi tidak ditampilkan di email selamat datang. Orang-orang tidak bisa masuk karena ini juga.

Perbaikan bug yang ditautkan di SUPEE-9767 Patch / CE 1.9.3.3 - Satu Halaman Checkout - Masalah Registrasi Pelanggan telah melakukan pekerjaan untuk saya juga.

ahe_borriglione
sumber
2

Adakah yang bisa memberitahuku untuk apa ini ... untuk di supee-9767?

masukkan deskripsi gambar di sini

Detzler
sumber
1
Versi jQuery 1.10.2 dianggap rentan, dan ditandai oleh beberapa pemindai PCI. Versi 1.12 tidak.
Ryan Hoerr
@Detzler StackExchange bukan forum. Jika Anda ingin mengajukan pertanyaan, Anda harus memposting satu, bukan jawaban untuk sebuah pertanyaan.
toon81
1
Ryan Hoerr bertanya tentang masalah apa pun yang dibawa oleh tambalan. Jadi saya katakan padanya kemungkinan perubahan yang melanggar seperti yang Anda lihat di tangkapan layar. Saya tidak bisa menjelaskan alasan perubahan ini. Jadi saya sub bertanya. Jadi apa masalahmu?
Detzler
2

Patch tidak berfungsi bahkan untuk 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

bahkan setelah menerapkan tambalan lama secara manual.

$ 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

Solusi / masalah yang saya temukan adalah bahwa beberapa perubahan pada patch untuk 1.7.0.2 adalah untuk file yang tidak ada sebelum 1.9.2.3. Jadi saya menyalin file berikut dari instalasi 1.9.2.3 yang baru sebelum menjalankan skrip tambalan:

  • app / code / core / Mage / Core / Model / File / Validator / Image.php
  • aplikasi / kode / inti / Penyihir / Penjualan / Model / Penawaran / Item.php
Ricardo Martins
sumber
Patch mengasumsikan semua patch keamanan lainnya telah diterapkan. File yang Anda bicarakan ditambahkan / diubah oleh tambalan sebelumnya. Anda kehilangan setidaknya SUPEE-7405.
Ryan Hoerr
Hai Ryan, Sebenarnya saya mencoba menerapkan 7405 juga, tetapi tidak berhasil ... $ ./PATCH_SUPEE-7405_CE_1.7.0.2_v1.1-2016-02-23-07-22-52 \ (1) .sh Memeriksa apakah patch dapat diterapkan / dikembalikan berhasil ... ERROR: Patch tidak dapat diterapkan / dikembalikan berhasil. (..) Adminhtml / Helper / Sales.php Hunk # 1 GAGAL di 121. 1 dari 1 hunk GAGAL - menyimpan penolakan ke file (..) Adminhtml / Helper / Sales.php.rej menambal file (..) / Core / Model / Config.php Hunk # 1 GAGAL di 1642. 1 dari 1 hunk GAGAL - menyimpan penolakan ke file (..) Config.php.rej menambal file (..) / Kutipan / Item.php Hunk # 1 GAGAL di 509 ....
Ricardo Martins
@RicardoMartins bagaimana saya bisa mengatasi kesalahan ini: menambal aplikasi file / lokal / en_US / Mage_Adminhtml.csv Hunk # 2 GAGAL di 36. 1 dari 2 baking GAGAL - menyimpan tolak ke aplikasi file / lokal / en_US / Mage_Adminhtml.csv.rej ?
zus
0

Tambahkan tambahan ke https://magento.stackexchange.com/a/176930/46249

Perhatikan bahwa Symlink selalu dinonaktifkan secara default pada instalasi Magento baru, admin YA / TIDAK nilai konfigurasi default ke 'TIDAK'. Pembaruan sekarang secara eksplisit menonaktifkan symlink di config.xml dan sebagai tindakan pencegahan tambahan juga menghapus bagian template dari admin-> pengembang yang berisi opsi konfigurasi.

Ini tidak akan mempengaruhi pengaturan symlink Anda saat ini, jika Anda mengaktifkan symlink secara manual sebelum 1.9.3.2 mereka akan tetap diaktifkan, meskipun Anda tidak dapat melihat pengaturan lagi di admin.


Teks tebal tidak benar. Jika memperbarui ke 1.9.3.4 (SUPEE-9767 V2) atau pengaturan saat ini yang lebih baru akan dihapus:

# 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'
    ))
);

Admin yang bertanggung jawab dapat mengaktifkan bagian admin symlink lagi dengan mencari perubahan berbeda pada bagian template di app / code / core / Mage / Core / etc / system.xml dan menambahkan bagian ke system.xml Anda di sekitar baris 600. Atau symlink cek ganda masih diaktifkan dengan

Hanya membuat opsi konfigurasi terlihat lagi tidak menyelesaikan masalah. Opsi muncul, tetapi Anda tidak dapat mengubah konfigurasi karena model backend yang baru diperkenalkan mencegah penghematan nilai. Lihat:

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

dan

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

Jadi Anda harus menghapus atau mengganti model backend ini, lihat Cara mengaktifkan symlink setelah SUPEE-9767 V2 dipasang?

sv3n
sumber