Pepijat berselang-seli ialah jenis paling sukar untuk didiagnosis kerana ia gagal pada langkah penyahpepijatan paling asas: menghasilkannya semula apabila perlu. Butang “buang item” dalam laci troli sebuah kedai gagal dengan ralat 403 Forbidden bagi sesetengah pelawat, sesetengah masa, tanpa sebarang maklumat berguna dalam log ralat PHP yang menunjukkan puncanya.
Membaca tanda kegagalan
Badan respons permintaan AJAX hanyalah -1, bersama status HTTP 403. Gabungan khusus itu ialah tanda WordPress sendiri bagi panggilan check_ajax_referer() yang gagal, iaitu pengesahan nonce keselamatan yang dilakukan setiap pengendali AJAX yang dibina dengan betul sebelum melakukan apa-apa. Nonce yang dihantar halaman itu tidak sepadan dengan apa yang dijangka pelayan.
Mengapa nonce yang sah boleh gagal
Nonce WordPress tidak kekal: ia dijana bagi setiap muatan halaman dan tamat tempoh selepas lebih kurang 24 hingga 48 jam, terikat pada tetingkap masa bergerak dan bukan nilai tetap. Namun, cache halaman penuh LiteSpeed laman itu dikonfigurasi dengan TTL 7 hari, bermakna halaman dalam cache boleh dihidangkan tanpa perubahan kepada setiap pelawat sehingga seminggu penuh selepas ia dijana.
Mana-mana halaman yang masih dihidangkan daripada cache lebih kurang dua hari selepas dicache memberikan nonce yang sudah tamat tempoh ketika pelawat sebenar cuba menggunakannya; bukan kerana masalah dalam sesi pelawat itu, tetapi kerana HTML itu sendiri sudah lapuk berbanding jam keselamatan WordPress.
Penyelesaiannya, dan mengapa ia penyelesaian sebenar dan bukan jalan pintas
Mengurangkan TTL cache halaman kepada 6 jam, jauh di bawah jangka hayat minimum nonce WordPress, menyelesaikannya serta-merta dan sepenuhnya kerana ia menangani ketidakpadanan sebenar, bukan menutup simptom. Semasa menyiasat, kami juga membuang antara muka troli pendua yang tidak berkaitan dari halaman checkout, kerana semakan pesanan checkout sendiri sudah memaparkan maklumat yang sama.
Pengajaran utama
- Badan respons
-1dengan HTTP 403 hampir seperti cap jari bagi semakan nonce WordPress yang gagal; berbaloi dikenali sekali pandang. - TTL cache halaman penuh dan jangka hayat token keselamatan WordPress ialah dua tetapan yang mesti sepadan, dan tiada apa yang menguatkuasakannya secara lalai.
- Pepijat berselang-seli yang kelihatan rawak selalunya ialah ketidakpadanan masa antara dua sistem yang masing-masing berfungsi dengan betul secara berasingan.
Bacaan berkaitan: anjakan cap masa enam jam, apa yang sebenarnya diliputi penyelenggaraan laman web.
Menghadapi had yang serupa dalam panel WooCommerce atau WordPress anda sendiri? Mari berbincang: ArtinTech Solution membina alat kedai tersuai seperti ini.