Bob menggunakan aplikasi web untuk mencapai sesuatu. Dan:
- Browsernya sedang diet, oleh karena itu tidak mendukung cookie .
- Aplikasi web adalah salah satu yang populer, ia berurusan dengan banyak pengguna pada saat tertentu - ia harus berskala baik. Selama sesi penyimpanan akan membatasi jumlah koneksi simultan , dan, tentu saja, akan membawa penalti kinerja yang tidak dapat diabaikan , kami mungkin ingin memiliki sistem tanpa sesi :)
Beberapa catatan penting:
- kami memiliki keamanan transportasi ( HTTPS dan sahabatnya);
- di balik tirai, aplikasi web mendelegasikan banyak operasi ke layanan eksternal , atas nama pengguna saat ini (sistem tersebut mengenali Bob sebagai salah satu penggunanya) - ini berarti bahwa kami harus meneruskan kredensial Bob kepada mereka .
Sekarang, bagaimana kita mengotentikasi Bob (pada setiap permintaan)? Cara manakah yang masuk akal untuk menerapkan hal seperti itu?
- bermain tenis dengan kredensial melalui bidang tersembunyi HTML ... bola berisi kredensial ( nama pengguna & kata sandi ) dan dua raket masing-masing adalah browser dan aplikasi web. Dengan kata lain, kami dapat mengangkut data bolak-balik melalui bidang formulir, bukan melalui cookie. Di setiap permintaan web, browser memposting kredensial. Padahal, dalam kasus aplikasi satu halaman , ini mungkin terlihat seperti bermain squash di dinding karet, daripada bermain tenis , karena formulir web yang berisi kredensial mungkin tetap hidup sepanjang masa halaman web. (dan server akan dikonfigurasi untuk tidak menawarkan kredensial kembali).
- menyimpan username & password dalam konteks halaman - variabel JavaScript dll. Halaman tunggal diperlukan di sini, IMHO.
- otentikasi berbasis token terenkripsi. Dalam kasus ini, tindakan log-in akan menghasilkan token keamanan terenkripsi (nama pengguna + kata sandi + sesuatu yang lain). Token ini akan disajikan kembali ke klien dan permintaan yang akan datang akan disertai dengan token. Apakah ini masuk akal? Kami sudah memiliki HTTPS ...
- lainnya ...
- upaya terakhir: jangan lakukan ini, simpan kredensial dalam sesi! Sesi itu bagus. Dengan atau tanpa cookie.
Apakah ada masalah web / keamanan yang muncul di benak Anda, berkenaan dengan salah satu ide yang dijelaskan sebelumnya? Sebagai contoh,
- time-outing - kami dapat menyimpan stempel waktu , bersama dengan kredensial (stempel waktu = waktu Bob memasukkan kredensial-nya). Misalnya saat SEKARANG - stempel waktu> ambang batas , kami mungkin menolak permintaan tersebut.
- Perlindungan skrip lintas situs - tidak boleh berbeda dengan cara apa pun, bukan?
Terima kasih banyak telah meluangkan waktu untuk membaca ini :)