Untuk mempertahankan diri dari serangan, developer perlu mengurangi kerentanan dan menambahkan fitur keamanan ke aplikasi. Untungnya, di web, browser menyediakan banyak fitur keamanan. Beberapa tersedia untuk dipilih oleh developer, dan beberapa diaktifkan secara default untuk melindungi pengguna.
Konsep "sandbox"
Browser web modern dibangun berdasarkan konsep "sandbox". Sandbox adalah mekanisme keamanan yang digunakan untuk menjalankan aplikasi di lingkungan yang dibatasi. Sama seperti sandbox fisik di taman bermain tempat anak-anak dapat membuat apa pun yang mereka inginkan dalam batas tanpa membuat kekacauan di tempat lain, kode aplikasi memiliki kebebasan untuk dijalankan dalam lingkungan yang dibatasi. Misalnya, JavaScript dapat menambahkan dan mengubah elemen di halaman, tetapi mungkin dibatasi untuk mengakses file JSON eksternal. Hal ini disebabkan oleh fitur sandbox yang disebut asal yang sama
Mengapa sandbox diperlukan?
Setiap hari, pengguna web mendownload kode arbitrer dan menjalankannya di komputer atau ponsel mereka beberapa kali. Jika seseorang mengatakan "Hai! Download dan jalankan aplikasi ini!", Anda mungkin berhenti sejenak untuk berpikir apakah aplikasi tersebut berasal dari sumber tepercaya, membaca tentang vendor aplikasi, atau memeriksa ulasan dengan cermat. Bagaimana jika seseorang mengirimkan URL kepada Anda yang mengatakan "lihat postingan blog ini"? Anda mungkin akan mengkliknya tanpa mengajukan pertanyaan seperti "Jenis JavaScript apa yang akan didownload situs ini?".
Sandbox browser adalah fitur utama yang membuat penjelajahan di web menjadi lancar dengan membuatnya lebih aman untuk menjalankan kode arbitrer.
Membuatnya aman berdasarkan desain
Jika browser melakukan sandbox pada setiap aplikasi web, apakah kita perlu memperhatikan keamanan? Tentu saja ya.
Pertama-tama, fitur sandbox bukanlah perisai yang sempurna. Meskipun teknisi browser bekerja keras, browser dapat memiliki kerentanan dan penyerang selalu mencoba untuk melewati sandbox (seperti dengan Spectre Attack).
Sandbox terkadang dapat menghalangi pembuatan pengalaman web yang hebat. Misalnya, browser dapat memblokir permintaan pengambilan ke gambar yang dihosting di domain lain. Anda dapat membagikan resource di domain yang berbeda dengan mengaktifkan Cross-Origin Resource Sharing (CORS untuk singkatnya), tetapi jika tidak dilakukan dengan hati-hati, Anda dapat mengekspos resource ke semua orang lain di web, yang pada dasarnya membatalkan sandbox.
Rangkuman
Pengalaman web yang aman hanya dapat dicapai jika keamanan disertakan dalam desain aplikasi Anda, dan desain yang kuat dimulai dengan memahami fitur yang ada. Dua panduan berikutnya membahas CORS dan kebijakan asal yang sama secara mendalam.