Saya ingin mulai menggunakan WordPress REST API v2 untuk menanyakan informasi dari situs saya. Saya perhatikan bahwa ketika saya mengunjungi URL titik akhir secara langsung, saya dapat melihat semua data secara publik. Saya juga melihat bahwa banyak tutorial menyebutkan penggunaan server uji atau lokal daripada situs langsung.
Pertanyaan saya adalah:
- Apakah ini dimaksudkan untuk digunakan di lokasi produksi?
- Apakah ada risiko keamanan untuk mengizinkan titik akhir dilihat oleh siapa pun, seperti
/wp-json/wp/v2/users/
yang menunjukkan semua pengguna yang terdaftar di situs? - Apakah mungkin untuk mengizinkan hanya pengguna yang berwenang untuk mengakses titik akhir?
Saya ingin memastikan bahwa saya mengikuti praktik terbaik terkait keamanan, jadi tip apa pun akan membantu. The docs api menyebutkan otentikasi, tapi aku tidak yakin bagaimana untuk mencegah URL dari yang diakses secara langsung. Bagaimana orang lain biasanya mengatur data ini untuk diakses oleh aplikasi eksternal tanpa memaparkan terlalu banyak informasi?
Jawaban:
Iya. Banyak situs sudah menggunakannya .
Tidak. Respons server tidak ada hubungannya dengan keamanan, apa yang dapat Anda lakukan dengan layar kosong / akses hanya baca? Tidak ada!
Namun, Jika situs Anda mengizinkan kata sandi yang lemah, ada beberapa masalah . Tapi itu kebijakan situs Anda, REST API tidak tahu apa-apa tentang itu.
Iya. Anda dapat melakukannya dengan menggunakan izin panggilan balik .
Sebagai contoh:
Pertanyaan ini sulit dijawab karena kita tidak tahu apa / kapan terlalu banyak informasi . Tapi kita semua menggunakan referensi dan cheatsheet .
sumber
/wp-json/wp/v2/users/
. (Referensi wordpress.stackexchange.com/q/252328/41488 @JHoffmann komentar)Dimungkinkan untuk menambahkan panggilan balik izin khusus ke titik akhir API Anda yang memerlukan otentikasi untuk melihat konten. Pengguna yang tidak sah akan menerima respons kesalahan
"code": "rest_forbidden"
Cara paling sederhana untuk melakukan ini adalah memperluas WP_REST_Posts_Controller. Berikut ini contoh yang sangat sederhana:
Anda akan melihat bahwa panggilan balik izin
function get_items_permissions_check
digunakancurrent_user_can
untuk menentukan apakah akan mengizinkan akses. Bergantung pada bagaimana Anda menggunakan API, Anda mungkin perlu mempelajari lebih lanjut tentang otentikasi klien.Anda kemudian dapat mendaftarkan jenis pos kustom Anda dengan dukungan REST API dengan menambahkan argumen berikut di
register_post_type
Anda akan melihat
rest_controller_class
penggunaanMy_Private_Posts_Controller
alih-alih pengontrol default.Saya kesulitan menemukan contoh dan penjelasan yang baik untuk menggunakan REST API di luar dokumentasi . Saya memang menemukan penjelasan yang bagus untuk memperluas controller default , dan inilah panduan yang sangat menyeluruh untuk menambahkan titik akhir .
sumber
Inilah yang saya gunakan untuk memblokir semua pengguna yang tidak masuk menggunakan REST API sama sekali:
sumber
sumber