Saya menggunakan django-rest-framework . Ini memberikan Django admin style mengagumkan yang dapat didokumentasikan API self-documenting. Tetapi siapa pun dapat mengunjungi halaman-halaman itu dan menggunakan antarmuka untuk menambahkan data (POST). Bagaimana saya bisa menonaktifkannya?
django
django-rest-framework
iForest
sumber
sumber
Jawaban:
Anda hanya perlu menghapus renderer API yang dapat dijelajahi dari daftar renderer yang didukung untuk tampilan.
Umumnya:
Per-view basis:
Selain :
Lihat juga jawaban di bawah ini untuk detail lebih lanjut tentang membatasi rendering API yang dapat dijelajahi ke pengembangan.
sumber
it's a big aid to any developers working on the API
. Tidakkah seharusnya mereka memiliki file pengaturan untuk pengembangan dan produksi? Dalam pengembangan, aktifkan API yang dapat dijelajahi.Sementara jawaban yang diterima untuk pertanyaan ini memang menjawab pertanyaan seperti yang telah dikatakan, saya merasa bahwa itu tidak menyelesaikan masalah aktual yang ada.
Untuk melengkapi dalam jawaban ini, menonaktifkan api HTML yang dapat ditelusuri dilakukan dengan menghapusnya dari kelas renderer seperti:
Namun, masalah aktual yang disinggung pertanyaan adalah orang-orang dapat memposting ke API tanpa otentikasi. Saat menghapus formulir membuatnya kurang jelas, jawaban ini tidak melindungi titik akhir API.
Minimal, seseorang menemukan pertanyaan ini dan ingin melindungi API dari pengiriman POST yang tidak diautentikasi, atau tidak sah; mereka ingin mengubah Izin API
Berikut ini akan menetapkan semua titik akhir hanya untuk dibaca kecuali jika pengguna diautentikasi.
Jika Anda ingin menyembunyikan API sepenuhnya kecuali jika pengguna masuk, Anda juga bisa menggunakan
IsAuthenticated
.FYI: Ini juga akan menghapus formulir dari API HTML yang dapat ditelusuri saat menanggapi izin. Ketika pengguna yang diautentikasi masuk, formulir akan tersedia lagi.
Putaran Bonus :
Hanya aktifkan API HTML yang dapat ditelusuri di dev:
sumber
REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
Cukup Tambahkan ini ke Pengaturan Anda .py harus menonaktifkan API dijelajahi!
sumber