Apakah cukup untuk mengamankan halaman status pesanan hanya dengan URL acak?

11

Setelah pelanggan (perusahaan) membeli beberapa barang di toko online kami, kami mengirim email berisi tinjauan umum tentang apa yang telah ia beli kepadanya.

Kami ingin memberi tahu pelanggan kami tentang pembayaran yang diterima, pelacakan paket, dll. Saya akan menyelesaikan ini dengan menetapkan setiap pesanan ID acak dan menambahkan tautan ke setiap surat. Tautannya mungkin seperti ini: http://shop.foo.bar/order/rwklvc46g9wt7kvy09f1

Apakah Anda akan mengambil langkah-langkah tambahan untuk melindungi data? Atau pilih solusi yang sama sekali berbeda?

Keuntungan:

  • tidak ada pembaruan status annyo per email (terutama jika sering terjadi pembaruan)
  • sumber informasi tunggal (tidak pernah ketinggalan jaman)
  • dapat dibagikan (misalnya kepada atasan atau rekannya)

Kekurangan:

  • data pribadi terbuka di situs web yang dapat diakses publik (mis. nomor telepon, detail pembayaran)
Dan Elpat
sumber
4
Hai Dan, selamat datang di Webmaster. Anda tampaknya telah menciptakan dua pengguna identik dan diedit pertanyaan Anda dengan (?) Lainnya "Dan" - karena ini adalah dalam antrian menunggu persetujuan. Pengguna yang mengajukan pertanyaan selalu dapat mengedit pertanyaan mereka sendiri secara bebas dan membuat komentar pada jawaban, dll. "Dan" lainnya tidak memiliki reputasi yang cukup untuk melakukan salah satu dari ini - karena mereka tidak mengajukan pertanyaan.
MrWhite

Jawaban:

8

Tanpa keamanan tambahan, tidak. URL acak dirayapi sepanjang waktu. Namun, ini bagus bila dilakukan dengan halaman masuk untuk mengautentikasi pengguna.

Solusi perantara adalah memastikan halaman status tidak mengandung data pribadi, hanya info umum. Misalnya, 'DIBAYARKAN DENGAN CC' daripada 'DIBAYAR oleh VISA 1234567891' dan 'Dikirimkan' alih-alih 'Dikirim ke John Doe, 123 Blue Street', dll.

Itai
sumber
0

Saya pikir Anda harus lebih melindungi data itu. Mengenai kesederhanaan sistem, saya sangat setuju bahwa URL publik dengan string acak dan unik sudah cukup dan praktis.

Namun, jika metode pembayaran (termasuk informasi kartu kredit), email atau telepon akan ditampilkan, di sana Anda harus melindungi data itu. Ini juga tergantung pada bagian dunia mana Anda berada, tetapi di sebagian besar dari mereka kebutuhan ini meluas ke masalah hukum dan perlindungan data pengguna.

Apa yang dilakukan sebagian besar situs web belanja untuk jenis situasi ini adalah meminta kredensial (login / kata sandi) atau nomor pelacakan dengan kode pelacakan, atau sesuatu yang hanya dimiliki oleh pengguna atau pihak tepercaya pengguna.

Alfa
sumber
-1

Ya itu sudah cukup selama:

  1. Anda cukup mengirim tautan melalui email, dan tidak mengirimkannya ke Google. Tetapi menurut pertanyaan Anda, inilah yang Anda lakukan, jadi tidak ada cara bagi Google untuk mengetahui tautannya karena itu tidak akan pernah diindeks / dirayapi.

  2. Anda membuat ID yang digunakan dalam tautan acak dan cukup lama. Jika tidak acak, tetapi Anda menggunakan bilangan bulat tambahan sebagai ID, salah satu pelanggan Anda dapat dengan mudah mengetahui bahwa dengan memasukkan angka tambahan secara bertahap di tautan, ia dapat membaca semua pesanan lainnya. Jika itu acak, tetapi tidak cukup lama (katakanlah itu hanya terdiri dari 4 digit / huruf) itu akan mudah bahkan dengan PC rumahan untuk secara kasar menyerang pesanan Anda, saya hanya perlu mencoba (26 + 10) ^ 4 = 1.679.616 kemungkinan kombinasi. Katakanlah saya menjalankan skrip yang mencoba satu tautan per detik, dibutuhkan skrip kurang dari 20 hari untuk memaksa semua tautan yang ada dan membaca semua pesanan Anda.

  3. PENTING: untuk meningkatkan keamanan Anda harus menghapus tautan setelah beberapa hari (yaitu setelah 1 bulan). Ini adalah trik untuk membuatnya aman. Dengan cara ini, bahkan jika seseorang mencoba dengan paksa memaksa tautan Anda, ia akan membutuhkan kekuatan kalk besar jika tidak, serangannya tidak akan pernah cukup cepat untuk mencoba semua kombinasi yang mungkin sebelum dihapus. Dan bahkan jika ia memiliki kekuatan perhitungan yang besar, ia tidak akan dapat menguji lebih dari satu tautan per detik karena server yang menangani pesanan Anda mungkin mulai menolak koneksinya jika ia mencoba menghubungkan berulang kali satu kali per detik. FYI: menghapus tautan, tidak berarti Anda harus menghapus semua pesanan dalam DB. Anda bisa menggunakan kunci utama lain untuk tabel pesanan (int autoincrement sederhana) dan Anda bisa menggunakan bidang UNIQUE (yang memungkinkan NULL) yang disebut link_id yang merupakan salah satu yang Anda masukkan dalam tautan. Setelah sebulan Anda hanya perlu menghapus nilai link_id dan mengaturnya NULL. Dengan cara ini pesanan akan tetap dalam tabel dan dapat dilihat dari panel admin Anda, tetapi tautan langsung tidak akan berlaku lagi untuk langsung melihat halaman pesanan.

Marco Demaio
sumber