Mengapa kita memerlukan keamanan layanan REST jika kita memiliki HTTPS

13

Saya merujuk pada artikel yang sangat bagus ini http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ yang berbicara tentang amazon seperti keamanan untuk layanan web. Namun saya ditanya pertanyaan dalam tim mengapa kita membutuhkannya jika kita sudah menggunakan HTTPS. Saya tidak dapat menjawab karena sepertinya bagi saya mereka mungkin benar meskipun nyali mengatakan sebaliknya.

Juga ada tempat ketika menyediakan layanan REST di mana HTTPS mungkin tidak berfungsi? Suka situs web pihak ketiga?

Jika ada yang punya pengalaman dalam mengamankan Layanan Web melalui jalinan publik, silakan jelaskan pengalaman Anda.

Terima kasih sebelumnya.

EDIT: Untuk memperjelas saya tidak berbicara tentang otentikasi pengguna tetapi lebih pada otentikasi klien. Otentikasi pengguna dapat dianggap sebagai teks biasa melalui HTTPS + REST.

Kekhawatiran saya adalah ini masih memungkinkan siapa saja untuk menggunakan layanan web tanpa klien saya untuk mengaksesnya karena semuanya adalah teks biasa meskipun melalui HTTPS titik akhir klien masih dapat menggunakan layanan web saya tanpa aplikasi klien.

Abhishek Dujari
sumber
3
Paling cocok untuk security.stackexchange.com ?
jweyrich
1
mungkin Anda benar tetapi pertanyaan saya terkait mor deve.

Jawaban:

13

Mengapa kita perlu memberikan Gmail - atau situs lain mana pun dengan akun pengguna - nama pengguna dan kata sandi kami jika sudah menggunakan HTTPS? Jawabannya sama dengan jawaban untuk pertanyaan Anda.

HTTPS menyediakan, pertama dan terutama, koneksi terenkripsi antara server dan klien.

Kepercayaan yang melekat pada HTTPS didasarkan pada otoritas sertifikat utama yang telah diinstal sebelumnya dalam perangkat lunak browser (ini setara dengan mengatakan "Saya mempercayai otoritas sertifikat (mis. VeriSign / Microsoft / dll.) Untuk memberi tahu saya siapa yang harus saya percayai").

Kecuali server memberikan sertifikat kepada setiap pengguna , server tidak dapat mempercayai klien tanpa beberapa metode otentikasi lainnya.

Matt Ball
sumber
maaf Anda salah paham atau saya tidak jelas. Amazon APi docs menyatakan bahwa kita harus menggunakan HTTPS tetapi jika kita tidak KEMUDIAN kita menandatangani permintaan. Kata sandi nama pengguna tidak relevan pada saat ini.
3
Pada tingkat tinggi, Anda perlu membuktikan identitas Anda ke server agar dapat menerima perintah dari Anda. Otentikasi klien dapat dilakukan melalui HTTPS, dan juga dapat dilakukan dengan menggunakan penandatanganan pesan.
Matt Ball
1
Jika Anda ingin menggunakan HTTPS untuk otentikasi klien, Anda harus mengeluarkan sertifikat kunci publik kepada setiap pengguna, seperti yang dijelaskan dalam tautan terakhir dalam jawaban saya. Pikirkan sertifikat ini sebagai versi elektronik dari paspor.
Matt Ball
1
Anda menautkan untuk "memberikan sertifikat kepada setiap pengguna" jawaban pertanyaan saya. Saya kira seluruh kunci publik swasta dan penandatanganan masih diperlukan untuk mengamankan kedua ujungnya dengan benar dalam layanan web sehingga SSL di server tidak cukup. Jawaban Anda adalah yang terdekat sejauh ini. Terima kasih banyak.
Abhishek Dujari
1
+1 Sangat bagus Anda menyebutkan sertifikat klien tetapi server tidak perlu mengeluarkan sertifikat. Mereka hanya perlu ditandatangani oleh CA tepercaya; pada dasarnya sama dengan cara kerja sertifikat server.
JimmyJames
3

HTTPS sangat bagus untuk mencegah penyadapan dan serangan "man in the middle". Karena mengenkripsi semua lalu lintas untuk satu sesi.

Tetapi karena kebanyakan orang menggunakan sertifikat default yang datang dengan browser mereka dan tidak tahu cara membuat sertifikat pribadi mereka sendiri atau mengkonfigurasi browser untuk menggunakannya.

Ini membuat HTTPS sangat tidak berguna untuk otentikasi pengguna selain melindungi dialog otentikasi dari menguping dll.

James Anderson
sumber
Saya pikir Anda sangat dekat dengan apa yang saya minta. Jadi Anda menyarankan agar kami tetap menandatangani permintaan di sisi klien bahkan jika kami menggunakan HTTPS?
2

HTTPS adalah tentang mengamankan saluran, bukan membuktikan siapa peneleponnya, atau banyak hal lain yang perlu Anda pertimbangkan. Otentikasi, otorisasi, dan enkripsi lapisan transpor hanya sebagian kecil dari apa yang perlu Anda pertimbangkan. Banyak kerentanan diketahui terkait dengan aplikasi web berlaku sangat banyak untuk REST apis. Anda harus mempertimbangkan validasi input, cracking sesi, pesan kesalahan yang tidak pantas, kerentanan karyawan internal dan sebagainya. Itu adalah subjek besar.

Robert

Robert Morschel
sumber
0

Anda dapat mengambil pendekatan sertifikat SSL klien dan memisahkan keamanan dari api. Kelemahan besar untuk pendekatan ini adalah overhead operasi yang akan menjadi mahal karena semakin banyak klien mengkonsumsi api Anda.

Bagaimanapun, otentikasi dasar HTTP baik-baik saja untuk sebagian besar layanan yang dikonsumsi publik.

CodeToGlory
sumber