Aman seperti Fort Knox: Cara Mengamankan Situs Web dari Peretas

Diterbitkan: 2021-10-05

Dalam artikel ini, kami menawarkan panduan tentang cara mengamankan situs web agar tidak diretas dan digunakan untuk aktivitas ilegal.

Keamanan online adalah bendera merah besar di langit biru internet yang tak terbatas. Dan sementara kata-kata "keamanan online" mungkin pertama-tama mengingatkan kita akan pelecehan dan perlindungan online bagi pengguna, kerusakan yang dapat ditimbulkan oleh kurangnya keamanan situs web pada bisnis juga signifikan. Pemilik situs web yang memotong pengeluaran untuk pembayaran keamanan dengan reputasi mereka dan, akibatnya, menderita kerugian finansial.


Isi:

  1. Mengapa setiap pemilik situs web perlu berinvestasi dalam keamanan
  2. Kerentanan apa yang sedang kita bicarakan?
  3. Cacat injeksi
  4. Paparan data sensitif
  5. Serangan skrip lintas situs (XSS)
  6. Otentikasi rusak
  7. Kesalahan konfigurasi keamanan
  8. Kontrol akses rusak
  9. Deserialisasi tidak aman
  10. Pencatatan dan pemantauan yang tidak memadai
  11. Entitas eksternal XML (XXE)
  12. Menggunakan komponen dengan kerentanan yang diketahui
  13. Cara membuat situs web yang aman
  14. Berapa biaya untuk mengamankan situs web?

Mengapa SETIAP pemilik situs web perlu berinvestasi dalam keamanan

berinvestasi dalam keamanan situs web

Beberapa pemilik situs web memiliki pemikiran seperti ini: Tidak ada yang bisa dicuri di situs web saya. Saya tidak menyimpan data pengguna atau detail pembayaran apa pun. Saya tidak membutuhkan keamanan top-of-the-shelf yang mahal.

Namun, itu benar-benar naif. Ada sejumlah alasan mengapa situs web Anda mungkin diretas meskipun tidak menghosting data pribadi atau keuangan apa pun. Berikut daftar kegunaan yang mungkin dimiliki peretas untuk hampir semua server yang tidak terlindungi:

  1. Untuk menuntut tebusan. Bahkan jika Anda tidak menyimpan data pengguna apa pun di server Anda, peretas dapat mengambil alih dan meminta uang dari Anda untuk mendapatkannya kembali.
  2. Untuk digunakan sebagai relai SMTP (protokol transfer surat sederhana). SMTP adalah protokol yang digunakan untuk mengirim email secara massal — misalnya, buletin. Peretas dapat menggunakan server Anda untuk mengirim spam atau ransomware.
  3. Untuk menambang Bitcoin.
  4. Untuk digunakan dalam serangan DDoS sebagai bagian dari botnet.
  5. Untuk mengubah atau menghapus data di situs web Anda. Alasan keinginan untuk melakukannya dapat bervariasi.

Dan itu hanya menggores permukaan. Selain ancaman yang ditimbulkan oleh pihak ketiga (hacker dan penjahat lainnya), ada juga ancaman yang ditimbulkan oleh kemungkinan kesalahan dari pihak karyawan yang mengelola website Anda, misalnya. Faktanya, keamanan internal sama pentingnya dengan eksternal, jika tidak lebih.

Jadi bagaimana saya bisa mengamankan situs web saya dari peretas? Anda bertanya.

Nah, Anda harus memperhitungkan dan menangani sejumlah kerentanan.

Kerentanan apa yang sedang kita bicarakan?

Salah satu entitas paling terkemuka di industri yang peduli dengan keamanan siber adalah Proyek Keamanan Aplikasi Web Terbuka, singkatnya OWASP. Yayasan OWASP memantau dan secara teratur memperbarui daftar masalah keamanan web yang tersebar luas. Berikut ini adalah masalah keamanan umum pada daftar mereka (tanpa urutan tertentu) pada hari penulisan artikel ini dan beberapa tips tentang cara mengurangi bahaya ke situs web Anda.

Cacat injeksi

Cacat injeksi

Cacat injeksi menyangkut database dan disebabkan oleh validasi input yang buruk. Ketika sistem Anda menerima input pengguna tetapi gagal memfilter input itu dengan benar, itu membuat sistem rentan — peretas dapat memanfaatkan ini untuk menyuntikkan kode mereka ke sistem Anda (karena itu namanya). Kode yang disuntikkan ini dapat menyebabkan situs web Anda melakukan perintah yang tidak Anda inginkan, membuatnya menampilkan data sensitif atau bahkan menyerahkan kendali situs web kepada peretas.

Jenis kerentanan injeksi yang paling populer melibatkan database SQL, tetapi kerentanan injeksi tidak benar-benar terbatas pada mereka. Kueri XPath, pernyataan LDAP, dan skrip XML juga rentan terhadap injeksi.

Bagaimana cara membuat situs web aman dari cacat injeksi? Dua praktik terbaik termasuk menggunakan sanitasi kueri SQL dan kueri berparameter. Ada API yang memungkinkan Anda melakukan itu.

Jika Anda tidak ingin menerapkan hal-hal ini dengan tangan, Anda dapat menggunakan alat ORM (pemetaan objek-relasional) untuk bahasa pemrograman pilihan Anda. Kami menggunakan ActiveRecord karena terkait erat dengan ekosistem Rails.

Tidak satu pun dari opsi di atas yang benar-benar anti-bodoh, tetapi ini sedekat mungkin dengan perlindungan yang solid akhir-akhir ini.

Paparan data sensitif

Paparan data sensitif

Data sensitif adalah data apa pun yang dapat digunakan untuk mengeksploitasi seseorang dengan satu atau lain cara:

  • Nama
  • Nomor KTP
  • Nomor SIM
  • Informasi Kartu Kredit
  • Nama pengguna dan kata sandi
  • Tanggal lahir
  • Informasi kesehatan
  • Nama kecil
  • Nama orang tua

Bahkan dapat mencakup informasi apa pun yang merupakan jawaban atas pertanyaan keamanan, misalnya untuk rekening bank Anda. Siapa sangka nama hewan peliharaan pertama Anda bisa dianggap sebagai data sensitif, bukan?

Mengamankan situs web dari paparan data sensitif itu sulit, karena paparan ini sulit diprediksi dan dideteksi. Tetapi ada tindakan pencegahan yang dapat Anda lakukan. Data sensitif, jika disimpan di situs web, tidak boleh disimpan sebagai teks biasa ; itu harus dienkripsi dengan teknologi terbaru dan ditransmisikan hanya melalui saluran aman.

Jika situs web Anda memfasilitasi transaksi apa pun atau umumnya berurusan dengan data sensitif, itu perlu menggunakan enkripsi SSL. Ini adalah teknologi enkripsi terbaru dan terbaik yang tersedia. Enkripsi SSL membantu Anda mentransfer data dengan aman antara browser dan server atau antar server. Selain itu, banyak pengguna akan mencari HTTPS di alamat situs web Anda untuk melihat apakah itu aman. Header itu adalah apa yang Anda dapatkan ketika Anda mendapatkan sertifikat SSL.

Biasanya juga disarankan untuk menyimpan data di cloud. Namun, jangan berasumsi bahwa menyimpannya di cloud secara otomatis akan membuat data menjadi aman. Semua tindakan perlindungan tetap harus diterapkan, dan Anda harus memantau dan memperbarui keamanan secara teratur.

Serangan skrip lintas situs (XSS)

Kerentanan XSS, di satu sisi, mirip dengan kelemahan injeksi, karena memungkinkan peretas memengaruhi halaman situs web Anda dengan menyuntikkan kode non-asli. Dalam kasus XSS, kita berbicara tentang injeksi JavaScript. JavaScript yang disuntikkan oleh peretas dapat mengubah konten halaman, menyisipkan tautan ke situs web berbahaya, dan mengirim kembali data yang awalnya disembunyikan ke peretas, yang mengakibatkan paparan data sensitif.

Ruby on Rails dan React memiliki perlindungan XSS bawaan. Opsi lain untuk tindakan anti-XSS dan anti-injeksi adalah menggunakan header respons HTTP Content-Security-Policy.

Otentikasi rusak

Alur otentikasi rusak

Awalnya disebut "Otentikasi rusak dan manajemen sesi," kelemahan ini berkaitan dengan kerentanan selama otentikasi pengguna dan manajemen sesi, seperti yang terlihat dari namanya. Ini termasuk pemaparan kredensial login dan sejumlah masalah dengan ID sesi:

  • ID sesi lemah
  • ID sesi ditampilkan di URL
  • ID sesi yang tidak berubah di antara login
  • Mengirimkan ID sesi melalui koneksi tidak aman

ID sesi terhubung langsung ke identitas pengguna, sama seperti kredensial, dan karenanya mencegatnya dapat menyebabkan pembajakan akun pengguna. Ini menyebabkan semua jenis kerusakan bagi pengguna Anda, mulai dari keuangan dan reputasi hingga terkait kesehatan.

Untuk membuat situs web Anda aman dari serangan autentikasi, memerlukan autentikasi multi-faktor : misalnya, memerlukan kata sandi konstan dan kata sandi satu kali dikirimkan ke perangkat seluler pengguna.

Google menggunakan opsi untuk otentikasi dua faktor : untuk membuka akun Google Anda di browser web, Anda harus terlebih dahulu memasukkan kata sandi Anda. Jika benar, Anda juga perlu membuka Google app di ponsel Anda dan memilih nomor yang ditampilkan di browser web.

Metode perlindungan situs web yang lebih jelas untuk autentikasi yang rusak meliputi:

  • menegakkan kompleksitas kata sandi — “Kata sandi Anda harus memiliki panjang minimal 8 karakter dan menyertakan setidaknya satu angka, satu huruf besar, dan satu huruf kecil.”
  • membatasi upaya login sebelum akun ditangguhkan (untuk waktu tertentu atau hingga pengguna menghubungi admin situs) dan memperingatkan admin

Kesalahan konfigurasi keamanan

Kesalahan konfigurasi keamanan adalah topik yang luas, karena ini dapat terjadi pada tahap apa pun dan dengan bagian mana pun dari situs web Anda: database, jaringan, server, kerangka kerja, penyimpanan, atau apa saja. Kelemahan konfigurasi dapat dimanfaatkan untuk mendapatkan akses ke fungsionalitas sistem. Tergantung di mana kerentanannya, akses tersebut dapat sebagian atau seluruhnya. Contoh kesalahan konfigurasi:

  • Anda belum menonaktifkan akun/sandi default.
  • Ada fitur yang tidak perlu dan tidak digunakan.
  • Izin akses ke cloud tidak dikonfigurasi dengan aman.
  • Pesan kesalahan Anda menampilkan informasi sensitif seperti nama pengguna, sandi, atau alamat email.

Hal pertama yang harus dilakukan untuk menghindari kesalahan konfigurasi adalah menghapus semua yang tidak digunakan — fitur, sampel, kerangka kerja, dll. Langkah selanjutnya adalah memastikan konfigurasi yang sama untuk semua lingkungan dan memeriksa kinerjanya secara teratur. Arsitektur yang dipikirkan dengan matang adalah suatu keharusan.

Kontrol akses rusak

Kontrol akses rusak

Kontrol akses adalah kontrol atas apa yang dapat dan tidak dapat dilakukan oleh pengguna. Jika tidak diterapkan dengan benar, itu berarti pengguna dapat melakukan tindakan yang dapat memengaruhi situs web Anda dengan cara yang tidak terduga. Salah satu cara untuk mengeksploitasi kontrol akses yang rusak adalah dengan melihat dan mengedit profil dan data pengguna lain. Lain adalah mengakses fitur premium tanpa membayar atau mendapatkan mereka. Yang lain adalah mengakses halaman admin dari akun non-admin (atau lebih buruk, tanpa akun sama sekali).

Cara terbaik untuk memastikan kontrol akses situs web Anda berfungsi adalah pengujian manual. Tidak ada alat pengujian otomatis yang dapat menjamin bahwa kontrol akses berfungsi sebagaimana dimaksud.

Kontrol akses yang rusak juga dapat disebabkan oleh penyalahgunaan mekanisme berbagi sumber daya lintas-asal (CORS), yang dapat menyediakan akses ke API yang dibatasi. Untuk alasan ini, disarankan untuk menggunakan CORS sesedikit mungkin.

Deserialisasi tidak aman

Serialisasi adalah proses mengubah suatu objek menjadi kode biner. Deserialisasi adalah, secara logis, sebaliknya. Keduanya adalah proses yang dilakukan secara teratur dalam pengembangan web, yang membuatnya penting untuk menerapkan perlindungan agar tidak menggunakannya dalam serangan.

Kabar baiknya adalah bahwa deserialisasi bukanlah sesuatu yang dapat dilakukan oleh pengguna biasa atau karyawan Anda secara tidak sengaja . Itu juga, sebagian, berita buruknya — serangan deserialisasi selalu disengaja dan, karenanya, ganas. Mereka juga menghasilkan masalah yang paling serius, seperti menjalankan kode jarak jauh, memasuki situs web tanpa otentikasi, dan memulai serangan DoS (denial of service).
Cara termudah untuk mengamankan situs web Anda dari jenis serangan ini adalah dengan melarang objek serial yang dibuat pengguna. Jika ini tidak dapat dilakukan, opsi terbaik berikutnya adalah menggunakan tanda tangan kriptografik untuk pemeriksaan integritas.

Menggunakan JSON, YAML, atau XML dapat membuat eksploitasi kelemahan deserialisasi lebih sulit bagi peretas karena format ini bukan biner.

Pencatatan dan pemantauan yang tidak memadai

Pencatatan dan pemantauan yang tidak memadai

Kerentanan ini tampaknya cukup jelas: jika Anda tidak memantau situs web Anda dan tidak mencatat semua kesalahan dan upaya yang gagal untuk masuk atau menjalankan fungsi kontrol akses , pada dasarnya Anda menggoda peretas untuk menyerang situs web Anda. Dalam semua jenis perang, digital atau kehidupan nyata, serangan pertama biasanya bukan tentang menang tetapi tentang melihat apa yang Anda hadapi. Dan jika ada cara yang mudah, Anda menggunakannya. Kegagalan untuk mencatat dan memantau penyelidikan tersebut akan mengakibatkan sistem Anda kehilangan serangan sama sekali atau mendeteksinya setelah serangan itu terjadi dan kerusakan telah terjadi.

Logging sangat penting untuk situs e-commerce, karena berhubungan dengan uang pengguna dan kredensial keuangan.

Untuk membuat situs web Anda lebih aman, catat semua upaya yang gagal dengan benar dan pastikan log ini disimpan dan dicadangkan di luar server lokal Anda. Gunakan sistem peringatan otomatis untuk kegagalan tersebut, dan, jika mungkin, menangguhkan akun yang terus menghasilkan kegagalan tersebut. Sangat penting untuk memiliki sistem peringatan waktu nyata sehingga Anda dapat segera bereaksi terhadap kemungkinan pelanggaran.

Entitas eksternal XML (XXE)

Kami telah menyebutkan XML (Extensible Markup Language) beberapa kali. Ini adalah bahasa yang fleksibel, yang membuatnya mudah digunakan dan tersebar luas. Prosesor XML mengurai data dari dokumen XML. Jika situs web Anda berbasis XML dan menerima unggahan XML tanpa validasi, itu bisa rentan terhadap serangan.

Untuk melindungi integritas situs web Anda, serangkaian tindakan berikut disarankan:

  • Nonaktifkan pemrosesan DTD (definisi tipe dokumen).
  • Batasi atau cegah unggahan XML, atau, jika itu tidak dapat dilakukan, terapkan daftar putih — validasi input sisi server positif.
  • Tingkatkan prosesor dan pustaka XLM Anda secara teratur.
  • Mencegah serialisasi data sensitif.
  • Jika berlaku, gunakan JSON atau format sederhana serupa.
  • Menerapkan Firewall Aplikasi Web (WAF) dan gateway keamanan API.

Menggunakan komponen dengan kerentanan yang diketahui

Tidak ada yang sempurna, dan setiap komponen yang Anda gunakan dalam perangkat lunak Anda pasti memiliki beberapa kerentanan, yang diketahui atau tidak diketahui. Menanggapi kerentanan yang ditemukan dan dikenali, perangkat lunak diperbarui untuk menutupi kerentanan tersebut atau mengurangi kerusakan apa pun yang mungkin disebabkan oleh eksploitasinya. Beberapa kelemahan menyebabkan kerusakan kecil, tetapi yang lain mungkin memberatkan bisnis Anda.

Untuk mencegah peretasan situs web karena kerentanan yang diketahui, penting untuk secara teratur memeriksa pembaruan dan memperbarui semua komponen yang digunakan di situs web Anda. Ini bisa menjadi tugas yang membosankan dalam perangkat lunak dan situs web yang memiliki banyak komponen. Itulah sebabnya pakar keamanan merekomendasikan untuk secara teratur memeriksa dan menghapus pustaka, fitur, file, dan komponen lain yang tidak perlu dan tidak digunakan. Dan, tentu saja, hanya menggunakan komponen dari sumber resmi. Jangan tergoda oleh situs web yang biasanya mendistribusikan perangkat lunak berbayar secara gratis — perangkat lunak ini dapat dimodifikasi untuk meretas situs web Anda.

Cara membuat situs web yang aman: intinya

Cara membuat situs web yang aman

Untuk menempatkan semua informasi teknologi-berat dalam istilah awam, berikut adalah tip keamanan yang harus diikuti jika Anda ingin membuat situs web yang aman:

  • Temukan host web yang andal.
  • Perbarui secara teratur semua perangkat lunak, kerangka kerja, dan pustaka yang digunakan di situs web Anda.
  • Hapus semua fitur dan komponen yang tidak perlu dari situs web Anda.
  • Siapkan sistem untuk memvalidasi input di sisi browser dan server.
  • Pantau informasi yang ditampilkan dalam pesan kesalahan.
  • Siapkan pemeriksa kekuatan sandi untuk pengguna.
  • Selalu gunakan kata sandi yang kuat untuk server dan halaman admin Anda, dan ubahlah secara teratur.
  • Investasikan dalam sertifikat SSL / gunakan protokol HTTPS.
  • Siapkan logging yang tepat untuk kegagalan dan kesalahan.
  • Log audit transaksi (terutama jika milik Anda adalah situs web e-niaga).
  • Pantau log dengan cermat.
  • Gunakan server cloud, tetapi tetap lindungi data Anda.
  • Selalu mengenkripsi data sensitif menggunakan teknologi terbaru.
  • Mintalah tim keamanan Anda mengawasi pembaruan keamanan yang muncul serta ancaman baru untuk dapat bereaksi terhadap serangan secara tepat waktu.

Berapa biaya untuk mengamankan situs web?

Ini adalah pertanyaan yang tidak ada jawaban pasti. Biaya keamanan sangat bergantung pada tumpukan teknologi yang digunakan situs Anda. Plus, ada biaya pembaruan, yang akan bergantung pada berapa banyak komponen yang perlu Anda perbarui, seberapa sering Anda memperbaruinya, dan berapa biaya memperbarui masing-masing komponen. Biaya ini perlu dihitung satu per satu oleh pengembang Anda.

Kami sangat menyarankan untuk mempertimbangkan keamanan sejak awal pengembangan . Membiarkan masalah keamanan sampai akhir mungkin (dan kemungkinan besar akan) mengakibatkan kebutuhan untuk memperkenalkan perubahan pada inti situs Anda, yang bahkan bisa lebih mahal daripada membangun keamanan sejak awal.

Kesimpulan

Jika Anda sendiri adalah pengembang, memiliki perusahaan pengembangan, atau memiliki tim pengembangan internal, Anda dapat mengatur semua tugas ini sebelumnya. Namun, jika Anda belum memiliki spesialis teknis di pihak Anda dan Anda ingin tahu cara membuat situs web yang aman dengan penyedia outsourcing, kami sarankan untuk mencari perusahaan pengembang yang tidak hanya dapat membangun situs web tetapi juga mendukungnya. Hampir tidak mungkin untuk memprediksi setiap kerentanan, tetapi kemampuan untuk bereaksi terhadap pelanggaran apa pun secara tepat waktu dapat menyelamatkan situs web Anda dari nasib terburuk.

Pengembang di Mind Studios berpengalaman dalam praktik keamanan terbaik dan mengikuti tren terbaru. Jika Anda memiliki pertanyaan tentang cara mengamankan situs web Anda dari peretas, hubungi kami untuk konsultasi gratis .

Ditulis oleh Svitlana Varaksina dan Artem Chervichnik