


Bagaimana untuk menyelesaikan kelemahan pemadaman fail sewenang-wenangnya dalam pemalam WordPress WooCommerce
Butiran teknikal
Mekanisme pemprosesan kebenaran WordPress dilaksanakan terutamanya dengan menyediakan fungsi yang berbeza kepada peranan yang berbeza Apabila peranan pentadbir kedai ditakrifkan, ia akan menetapkan fungsi edit_users kepada peranan ini, supaya Mereka boleh terus menguruskan akaun pelanggan kedai. Keseluruhan proses penetapan kebenaran berlaku semasa proses pemasangan pemalam. woocommerce/includes/class-wc-install.php:
//Shop manager role.add_role( 'shop_manager', // Internal name of the new role 'Shop manager', // The label for displaying array( // Capabilities ⋮ 'read_private_posts' => true, 'edit_users' => true, 'edit_posts' => true, ⋮ ));
Maklumat kebenaran peranan akan disimpan dalam pangkalan data sebagai tetapan teras WordPress, yang bermaksud bahawa peranan pengguna kini bebas daripada pemalam, walaupun jika pemalam tidak didayakan dan tidak akan menjejaskan kebenaran peranan yang berkaitan.
Apabila pengguna yang disahkan cuba mengubah suai maklumat pengguna lain, fungsi current_user_can() dipanggil dan kemudian memastikan bahawa hanya pengguna istimewa boleh melakukan operasi ini. Contoh panggilan fungsi Current_user_can():
$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) { edit_user($target_user_id);}
Logik pengesahan panggilan adalah seperti berikut: Pengguna ini ingin menggunakan ID $target_user_id untuk mengubah suai pengguna tertentu Adakah dia mempunyai kebenaran untuk melaksanakan?
Di bawah konfigurasi lalai, fungsi edit_users membenarkan pengguna dengan kebenaran (seperti pentadbir kedai) untuk mengedit pengguna lain, malah pengguna pentadbir, dan kemudian melakukan operasi seperti kemas kini kata laluan. Atas sebab keselamatan, WooCommerce perlu menentukan sama ada pentadbir kedai boleh mengedit pengguna, jadi pemalam perlu menambah kebenaran meta. Fungsi meta boleh dipanggil oleh current_user_can(). Nilai yang dikembalikan oleh fungsi di bawah tingkah laku lalai adalah benar, tetapi nilai yang dikembalikan oleh fungsi kebenaran meta boleh menentukan sama ada pengguna semasa boleh melakukan operasi sedemikian. Berikut ialah kod fungsi abstrak penapis kebenaran meta WooCommerce:
function disallow_editing_of_admins( $capability, $target_user_id ) { // If the user is an admin return false anddisallow the action if($capability == "edit_user"&& user_is_admin($target_user_id)) { return false; } else { return true; }}add_filter('map_meta_cap', 'disallow_editing_of_admins');
Sebagai contoh, apabila current_user_can('edit_user', 1) dipanggil, penapis akan menentukan bahawa ID ialah 1 ($target_user_id) Sama ada pengguna ialah pentadbir, dan berdasarkan keputusan, tentukan sama ada untuk membenarkan pengguna beroperasi.
Pentadbir kedai melumpuhkan pemalam
Secara lalai, hanya pentadbir boleh melumpuhkan pemalam. Walau bagaimanapun, kelemahan ini membolehkan pentadbir kedai memadamkan sebarang fail boleh tulis pada pelayan, jadi kami boleh menghalang WordPress daripada memuatkan pemalam dengan memadam fail utama WooCommerce-woocommerce.php.
Kerentanan pemadaman fail ini wujud dalam fungsi pengelogan WooCommerce Log akan disimpan dalam direktori kandungan wp dalam bentuk fail .log. Apabila pentadbir kedai ingin memadamkan fail log, dia perlu menyerahkan nama fail sebagai parameter GET. Coretan kod yang ditunjukkan di bawah ialah bahagian yang terdedah:
woocommerce/includes/admin/class-wc-admin-status.php
class WC_Admin_Status{ public static function remove_log() { ⋮ $log_handler = newWC_Log_Handler_File(); $log_handler->remove(wp_unslash($_REQUEST['handle']));}
woocommerce/includes/log-handlers/class-wc - log-handler-file.php
class WC_Log_Handler_File extends WC_Log_Handler{ public function remove($handle) { ⋮ $file = trailingslashit(WC_LOG_DIR) .$handle; ⋮unlink($file);
Masalahnya di sini ialah nama fail ($handle) akan ditambahkan pada direktori log (wp-content/wc-logs/) dan kemudian diserahkan kepada unlink( ) fungsi. Apabila menetapkan "$handle../../plugins/woocommerce-3.4.5/woocommerce.php", failkan wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce php akan dialih keluar dan menyebabkan WooCommerce dilumpuhkan.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan kelemahan pemadaman fail sewenang-wenangnya dalam pemalam WordPress WooCommerce. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP dan Flutter ialah teknologi popular untuk pembangunan mudah alih. Flutter cemerlang dalam keupayaan merentas platform, prestasi dan antara muka pengguna, dan sesuai untuk aplikasi yang memerlukan prestasi tinggi, merentas platform dan UI tersuai. PHP sesuai untuk aplikasi sebelah pelayan dengan prestasi yang lebih rendah dan bukan merentas platform.

Anda boleh mengubah suai lebar halaman WordPress anda dengan mudah dengan mengedit fail style.css anda: Edit fail style.css anda dan tambahkan .site-content { max-width: [lebar pilihan anda]; Edit [lebar pilihan anda] untuk menetapkan lebar halaman. Simpan perubahan dan kosongkan cache (pilihan).

Catatan WordPress disimpan dalam folder /wp-content/uploads. Folder ini menggunakan subfolder untuk mengkategorikan pelbagai jenis muat naik, termasuk artikel yang disusun mengikut tahun, bulan dan ID artikel. Fail artikel disimpan dalam format teks biasa (.txt), dan nama fail biasanya termasuk ID dan tajuknya.

Buat halaman produk dalam WordPress: 1. Buat produk (nama, penerangan, gambar); 4 . Buat variasi (warna, saiz yang berbeza);

Fail templat WordPress terletak dalam direktori /wp-content/themes/[theme name]/. Ia digunakan untuk menentukan penampilan dan kefungsian tapak web, termasuk pengepala (header.php), pengaki (footer.php), templat utama (index.php), artikel tunggal (single.php), halaman (page.php) , Arkib (archive.php), kategori (category.php), tag (tag.php), carian (search.php) dan halaman ralat 404 (404.php). Dengan mengedit dan mengubah suai fail ini, anda boleh menyesuaikan penampilan laman web WordPress anda

Cari pengarang dalam WordPress: 1. Setelah log masuk ke panel pentadbir anda, navigasi ke Catatan atau Halaman, masukkan nama pengarang menggunakan bar carian, dan pilih Pengarang dalam Penapis. 2. Petua lain: Gunakan kad bebas untuk meluaskan carian anda, gunakan operator untuk menggabungkan kriteria atau masukkan ID pengarang untuk mencari artikel.

Versi WordPress yang paling stabil ialah versi terkini kerana ia mengandungi tampung keselamatan terkini, peningkatan prestasi dan memperkenalkan ciri dan penambahbaikan baharu. Untuk mengemas kini kepada versi terkini, log masuk ke papan pemuka WordPress anda, pergi ke halaman Kemas Kini dan klik Kemas Kini Sekarang.

WordPress dibangunkan menggunakan bahasa PHP sebagai bahasa pengaturcaraan terasnya untuk mengendalikan interaksi pangkalan data, pemprosesan borang, penjanaan kandungan dinamik dan permintaan pengguna. PHP dipilih atas sebab termasuk keserasian merentas platform, kemudahan pembelajaran, komuniti aktif dan perpustakaan dan rangka kerja yang kaya. Selain daripada PHP, WordPress juga menggunakan bahasa seperti HTML, CSS, JavaScript, SQL, dll. untuk meningkatkan fungsinya.
