Mekanisme keamanan apa yang dimiliki Meteor? [Tutup]

92

Kita semua tahu bahwa Meteor menawarkan driver miniMongo yang secara mulus memungkinkan klien untuk mengakses lapisan persisten (MongoDB).

Jika ada klien yang dapat mengakses persistent API, bagaimana cara mengamankan aplikasinya?

Apa mekanisme keamanan yang disediakan Meteor dan dalam konteks apa mereka harus digunakan?

Olivier Refalo
sumber
6
Saya suka bahwa ini sudah dibahas, tetapi mereka seharusnya menyebutkan ini dalam video. Saya pikir hampir semua pengembang web yang menontonnya akan memiliki pertanyaan ini di benak mereka sejak 10 detik hingga akhir, dan hanya merasa kesal karena untuk produk yang begitu mengagumkan mereka MUNCUL mengabaikan masalah keamanan yang jelas sepenuhnya.
Naatan
6
Meteor 0.5.0 menambahkan otentikasi pengguna meteor.com/blog/2012/10/17/…
hipertracker
Anda dapat menulis ulang ini sedikit untuk membukanya kembali. Mungkin "Tindakan keamanan apa yang harus saya ambil?" atau "Opsi keamanan apa yang tersedia?"
joeytwiddle
1
Berbasis opini? Wat? Saya pikir ini adalah audit yang dibuka kembali karena jelas tidak berdasarkan opini.
bjb568
Saya setuju, keputusan berdasarkan opini di luar konteks - jawaban berdasarkan fakta yang sebenarnya.
Olivier Refalo

Jawaban:

64

Saat Anda membuat aplikasi menggunakan perintah meteor, secara default aplikasi menyertakan paket berikut:

  • PUBLIKASIKAN OTOMATIS
  • TIDAK AMAN

Bersama-sama, ini meniru efek dari setiap klien yang memiliki akses baca / tulis penuh ke database server. Ini adalah alat pembuatan prototipe yang berguna (hanya untuk tujuan pengembangan), tetapi biasanya tidak sesuai untuk aplikasi produksi. Saat Anda siap untuk rilis produksi, hapus saja paket ini.

Untuk menambahkan lebih banyak, Meteor mendukung paket Facebook / Twitter / dan Banyak Lagi untuk menangani otentikasi, dan yang paling keren adalah paket Akun-UI

Murali Ramakrishnan
sumber
2
Benar pada meteor 0,5
Olivier Refalo
5
Tidak aman secara default. Astaga.
Judah Gabriel Himango
16
@JudahHimango tidak aman untuk tujuan pengujian saja , dan menghapus kedua paket tersebut saat Anda siap untuk produksi semudah itu meteor remove autopublish insecure.
BenjaminRH
1
Bagaimana dengan metode meteor? Klien dapat mengaksesnya dari konsol bahkan dengan uninstal yang tidak aman, karena dijalankan di server. Bagaimana cara membuat mereka aman?
Matanya
2
@Matanya tetapi setelah digunakan dan dijalankan dari konsol, itu akan membuat access deniedkesalahan. Saksikan berikut ini.
ajduke
35

Dalam dokumen koleksi mengatakan:

Saat ini, klien diberi akses tulis penuh ke koleksi. Mereka dapat menjalankan perintah pembaruan Mongo yang sewenang-wenang. Setelah kami membangun otentikasi, Anda akan dapat membatasi akses langsung klien untuk memasukkan, memperbarui, dan menghapus. Kami juga mempertimbangkan validator dan fungsi serupa ORM lainnya.

pomber
sumber
1
Lihat juga utas ini di Quora dengan jawaban dari salah satu pengembang Meteor: quora.com/Meteor-web-framework/Whats-cool-about-Meteor/answer/…
dentarg
1
@jonathanKingston tautannya rusak, bisakah Anda memperbaruinya?
Carlos Barcelona
@CarlosBarcelona Domain kedaluwarsa dan artikel itu sebelum pembaruan keamanan di Meteor. Saya pikir itu adil untuk mengatakan itu sudah ketinggalan zaman; jadi saya telah menghapus komentar untuk menghemat waktu orang. Terima kasih
jonathanKingston
5

Jika Anda berbicara tentang membatasi klien untuk tidak menggunakan API sisipkan / perbarui / hapus apa pun yang tidak sah, itu mungkin.

Lihat, aplikasi rencana mereka di https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos

Juga, mereka sekarang telah menambahkan modul AUTH bawaan, yang memungkinkan Anda masuk dan mendaftar. Jadi aman. Sejauh Anda mengurus XSS, Valiations, header klien, dll.

tetapi Anda setiap saat dapat mengubah aplikasi meteor menjadi aplikasi nodejs yang berfungsi penuh dengan menerapkan ke node. Jadi, jika Anda tahu cara mengamankan aplikasi nodejs, Anda harus bisa mengamankan meteor.

Hitesh Joshi
sumber
1
Ini sepenuhnya benar per Sept 2012
Olivier Refalo
2

Mulai 0.6.4, selama mode pengembangan, blok is_client dan is_server masih keduanya masuk ke sistem klien. Saya tidak bisa mengatakan apakah ini dipisahkan saat Anda menonaktifkan mode pengembangan.

Namun, jika tidak, peretas mungkin dapat memperoleh wawasan dari sistem dengan meninjau blok kode if (Meteor.is_server). Itu terutama menyangkut saya, terutama karena saya mencatat bahwa saya masih pada titik ini tidak dapat memisahkan Koleksi menjadi file terpisah di klien dan server.

Memperbarui

Nah, intinya adalah jangan letakkan kode terkait keamanan di blok is_server di direktori non-server (misalnya - pastikan kode itu ada di bawah / server.

Saya ingin melihat apakah saya hanya tergila-gila karena tidak dapat memisahkan Koleksi klien dan server di direktori klien dan server. Sebenarnya tidak ada masalah dengan ini.

Ini tes saya. Ini adalah contoh sederhana dari model terbitkan / berlangganan yang tampaknya berfungsi dengan baik. http://goo.gl/E1c56

DrM
sumber
1
Solusinya adalah menyimpan kode Anda di server / folder - dengan cara ini kode tersebut tidak didorong ke klien.
Olivier Refalo
DRM, silakan lihat docs.meteor.com/#structuringyourapp - kode sensitif tidak perlu dikirim ke klien
emgee
Cobalah sesuatu yang sederhana; buat koleksi di file server, lalu buat koleksi yang sama di file klien dan beri tahu saya apa yang terjadi. Selanjutnya, buat file root dengan deklarasi collection, lalu cukup referensikan di file direktori server dan klien dan beri tahu saya apa yang terjadi. Jika Anda tidak dapat membuat koleksi, seperti saya tidak bisa, bagaimana Anda bisa mereferensikannya secara mandiri? Pada akhirnya, Anda memerlukan referensi ke collection untuk ada di file yang tersedia klien yang sama dan menggunakan is_server dan is_client. Saya harap saya salah, tetapi saya belum menemukan bagaimana atau mengapa.
DrM
Hmm, aneh, pengujian tampaknya baik-baik saja, akan memperbarui jawaban
DrM
Tautan ini adalah repo ke kode sederhana, tetapi tampaknya berfungsi dengan baik, tidak yakin kesalahan aneh apa yang terjadi di masa lalu atau bagaimana saya membuatnya kembali.
DrM