Apa sajakah praktik terbaik untuk otentikasi web berbasis cookie?

11

Saya sedang mengerjakan proyek sampingan kecil menggunakan CGI dan Python (skalabilitas bukan masalah dan itu perlu sistem yang SANGAT sederhana.)

Saya berpikir untuk menerapkan otentikasi menggunakan cookie, dan bertanya-tanya apakah ada praktik terbaik yang ada.

Ketika pengguna berhasil mengautentikasi, saya ingin menggunakan cookie untuk mencari tahu siapa yang masuk. Apa, menurut praktik terbaik, yang harus disimpan dalam cookie semacam itu?

rdasxy
sumber

Jawaban:

12

Kasus terbaik: ID tunggal yang terkait dengan semua informasi lain yang Anda butuhkan, yang pada gilirannya disimpan dalam database.

Ada kalanya masuk akal untuk menaruh beberapa informasi lain di sana, tetapi jarang. Anda selalu perlu bertanya pada diri sendiri mengapa, setidaknya lima kali .

SSL akan melindungi pengguna Anda dari pembajakan sesi, tetapi, meskipun demikian, jangan pernah menyimpan informasi sensitif yang tidak dienkripsi dalam cookie. Ini, pada dasarnya, disimpan dalam teks biasa di harddisk.

Akhirnya, dan yang paling penting, lindungi pengguna Anda dari serangan XSS dan CSRF .

Perlindungan XSS umumnya sesederhana hati-hati dari mana Anda memasukkan Javascript, karena Javascript di server lain dapat diubah tanpa sepengetahuan Anda, dan Javascript ini memiliki akses ke data cookie. Jadi jika Anda menggunakan jaringan pengiriman konten Evil Corp untuk melayani skrip jQuery Anda, mereka tiba-tiba dapat menambahkan kode untuk mengirimkan kepada mereka cookie pengguna Anda. Anda tidak akan tahu; pengguna Anda tidak akan tahu.

Baik unduh skrip dan sajikan dari server Anda sendiri atau gunakan CDN yang sangat tepercaya seperti Google atau Yahoo.

Perlindungan CSRF biasanya dilakukan dengan memiliki nilai acak di bidang tersembunyi dalam formulir. Nilai disimpan dalam sesi sehingga ketika formulir dikirimkan kembali, Anda dapat memverifikasi itu berasal dari komputer yang sama.

Sebagian besar kerangka kerja web sekarang memiliki teknik yang sangat sederhana untuk memasukkan token itu.

pdr
sumber
3
  • Gunakan securedan httpOnlybendera.
  • Encode data cookie sesi dan secara kriptografis menandatangani data yang disandikan dengan MAC. Periksa tanda tangan di server setiap kali, sebelum repot-repot mendekode data cookie sesi. (Rails melakukan ini secara default.)
yfeldblum
sumber