Saya sedang mengkaji untuk meningkatkan keselamatan tapak Wordpress saya dan semasa berbuat demikian mendapati bahawa API WP REST didayakan secara lalai (setakat WP 4.4 jika saya ingat dengan betul).
Apakah cara selamat untuk melumpuhkannya?
"Selamat" di sini bermakna ia tidak akan menyebabkan kesan sampingan yang tidak diingini, seperti tidak memecahkan sebarang fungsi teras WP yang lain.
Satu cara yang mungkin ialah menggunakan .htaccess
untuk menulis semula peraturan, tetapi yang menghairankan saya tidak menemui sebarang arahan "rasmi" untuk melakukan ini.
Sebarang bantuan atau nasihat amat kami hargai :)
Kemas kini: Pemalam pihak ketiga bukanlah penyelesaian yang saya cari. Walaupun saya tahu terdapat banyak alat yang boleh menyelesaikan tugasan ini, ia mengandungi banyak ciri tambahan yang boleh melambatkan tapak web. Saya berharap ada penyelesaian satu baris untuk masalah ini tanpa overhed tambahan pemalam.
Kemas kini 2: Ini ialah pendapat rasmi WordPress: https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can-i-disable-the-rest-api p>
Menurut ini, pasukan WordPress berharap ciri WP masa hadapan akan bergantung pada API REST baharu. Ini bermakna tiada cara selamat untuk melumpuhkan API REST.
Kami hanya berharap terdapat cukup pakar keselamatan yang bertanggungjawab untuk keselamatan WP.
Kemas kini 3:
Terdapat penyelesaian yang tersedia dalam manual API WordPress - anda boleh memerlukan pengesahan untuk semua permintaan
Ini memastikan bahawa akses tanpa nama ke API REST tapak web dilumpuhkan dan hanya permintaan yang disahkan adalah sah.
Jawapan yang diterima melumpuhkan semua panggilan API untuk pengguna yang tidak disahkan, tetapi banyak pemalam hari ini bergantung pada fungsi API ini.
Melumpuhkan semua panggilan akan mengakibatkan tingkah laku tapak web yang tidak dijangka, yang juga berlaku kepada saya apabila menggunakan kod ini.
Sebagai contoh, ContactForm7 menggunakan API ini untuk menghantar maklumat hubungan ke pangkalan data (saya rasa) dan melakukan pengesahan ReCaptcha.
Saya rasa lebih baik untuk melumpuhkan titik akhir (lalai) tertentu untuk pengguna yang tidak disahkan, seperti ini:
Dengan cara ini, satu-satunya titik akhir yang dibuka sekarang ialah titik yang dipasang oleh pemalam.
Untuk senarai lengkap titik akhir yang aktif di tapak anda, lihat
https://YOURSITE.com/wp-json/
Anda bebas untuk mengedit tatasusunan
$endpoints_to_remove
mengikut keperluan anda.Jika anda mempunyai jenis siaran tersuai, pastikan anda menambahkan kesemuanya pada senarai.
Dalam kes saya, Saya turut menukar awalan titik akhir lalai daripada
wp-json
更改为mybrand-api
. Ini sepatutnya bertindak sebagai penghalang kepada bot yang membuat beribu-ribu permintaan kekerasan.Ini yang saya lakukan:
Berdasarkan soalan asal pengarang, saya memilih pilihan 2 daripada cadangan WordPress rasmi (https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can- i-disable-the-rest-api). Jadi masukkan sahaja functions.php anda dan hanya biarkan pengguna log masuk menggunakan API yang lain (tetapi semak semak pautan asal sekiranya blok kod saya sudah lapuk ;) ): Kemas kini (1 Oktober 2021):