6 Risiko Keselamatan Latar Belakang Web yang Perlu Dipertimbangkan dalam Pembangunan

Ambil langkah-langkah dalam pembangunan untuk mengeras dan menjaga backend web anda dengan selamat.


Perniagaan kecil, bank, dan banyak industri bergantung pada aplikasi web. Dari sudut ketika membuat aplikasi web, sangat penting untuk memastikan mempunyai protokol untuk memeriksa kerentanan ketika pengembangan berkembang untuk mengelakkan pelanggaran keselamatan, kebocoran data, dan masalah kewangan.

Serangan web yang paling berbahaya adalah serangan yang berlaku di bahagian pelayan di mana data disimpan dan dianalisis.

Apa itu Backend?

Aplikasi web dibahagikan kepada dua bahagian – Frontend dan Backend.

  • Bahagian depan adalah sisi pelanggan, ini adalah bahagian yang berinteraksi dengan pengguna. Biasanya, ia dibina dengan HTML, CSS, dan Javascript.
  • Bahagian belakang adalah sisi pelayan. Ini pada dasarnya bagaimana aplikasi berfungsi, menerapkan logik, perubahan, dan kemas kini perniagaan. Beberapa tumpukan teknologi sisi pelayan yang popular melibatkan PHP, NodeJS, Java, Ruby, C, Python, pangkalan data, keselamatan (pengesahan, kawalan akses, dll.), Struktur, dan pengurusan kandungan.

Sedikit peringatan sebelum kita memulakan – pengesahan, kawalan akses & pengurusan sesi

Adalah biasa bagi kita untuk mengelirukan syarat. Oleh itu mari kita jelaskan dengan cepat:

  • Kebimbangan pengesahan membuktikan identiti pengguna (mis., Kata laluan, nama pengguna, keselamatan soalan, cap jari)
  • Kawalan akses menyangkut apa yang pengguna boleh mengakses aplikasi. Ini menegakkan kebijakan bahawa pengguna tidak dapat bertindak di luar izin yang mereka inginkan.
  • Pengurusan sesi menyangkut respons dan transaksi permintaan yang berkaitan dengan pengguna yang sama. Ini adalah mekanisme pertukaran yang digunakan antara pengguna dan aplikasi setelah dia berjaya disahkan.

Mari kita teliti perkara berikut untuk keselamatan web back-end yang lebih baik.

Kekurangan suntikan

Sejak 2010, OSWAP menggolongkan suntikan sebagai risiko aplikasi web paling berbahaya # 1.

Kekurangan suntikan membolehkan pengguna memberikan data yang mengandungi kata kunci yang akan mengubah tingkah laku pertanyaan yang dibina di pangkalan data. Sebagai contoh, misalkan kita mempunyai skrip SQL yang memeriksa apakah entri yang sepadan ada dalam pangkalan data.

uname = request.POST [‘nama pengguna’]
passwd = request.POST [‘kata laluan’]
sql = "PILIH id DARI pengguna DI MANA nama pengguna = ‘" + tidak dikenali + "’DAN kata laluan =’" + kata laluan + "’"
database.execute (sql)

Penyerang kini dapat memanipulasi bidang kata laluan menggunakan suntikan SQL, misalnya dengan memasukkan kata laluan ‘ATAU 1 =’ 1, yang mengarah ke pertanyaan SQL berikut:

sql = "PILIH id DARI pengguna DI MANA nama pengguna = ” DAN kata laluan = ‘kata laluan’ ATAU 1 = ‘1’

Dengan melakukannya, penyerang dapat mengakses semua tabel pengguna pangkalan data, kata laluannya selalu berlaku (1 = ‘1’). Sekiranya mereka log masuk sebagai pentadbir, mereka dapat membuat perubahan yang dia mahukan.

Cara mencegahnya?

Ia sangat MUDAH untuk mengelakkan kekurangan suntikan.

Cara terbaik dan sederhana untuk mengesahkan jika tidak ada kekurangan suntikan adalah tinjauan kod sumber manual yang menyeluruh untuk memeriksa sama ada pertanyaan dalam pangkalan data dilakukan melalui penyataan yang disediakan. Anda juga boleh menggunakan alat untuk memeriksa kerentanan.

Dan anda juga harus melakukan perkara berikut.

  • Gunakan ORM (Alat Pemetaan Relasional Objek).
  • Melarikan semua input. Medan tarikh tidak boleh menyimpan apa-apa lagi kecuali tarikh.
  • Pisahkan data anda sehingga hanya perkara yang harus diakses dari lokasi tertentu yang ditahan di lokasi tersebut.
  • Tuliskan kod ralat pengendalian yang baik. Jangan membuat pangkalan data atau backend anda terlalu verbose.

Troy Hunt mendapat kursus cemerlang mengenai suntikan SQL. Sekiranya berminat, anda boleh menerangkannya.

Pengesahan rosak

Seperti yang disebutkan sebelumnya, pengesahan berkaitan dengan kelayakan yang diberikan. Ini adalah barisan depan pertahanan terhadap akses yang tidak terhad. Walau bagaimanapun, pelaksanaan yang lemah dan tidak menghormati dasar keselamatan boleh menyebabkan pengesahan rosak.

Pengesahan yang rosak kebanyakannya berlaku oleh tiga corak:

  • Pemadat kelayakan: di mana penyerang mempunyai senarai nama pengguna dan kata laluan yang sah dan boleh mengautomasikan serangan untuk mengetahui bukti kelayakannya.
  • Serangan Bruteforce: di mana aplikasi membenarkan kata laluan yang lemah untuk pengguna atau pentadbir.
  • Rampasan sesi: di mana aplikasi memaparkan ID sesi, URL, atau tidak berputar setelah log masuk.

Dalam semua kes, penyerang boleh mendapatkan akses ke akaun penting dan bergantung pada perniagaan yang boleh menyebabkan pengubahan wang haram, pencurian identiti, atau mendedahkan maklumat yang sangat sensitif yang dilindungi secara sah.

Cara mencegahnya?

Sebelum melaksanakan sistem pengesahan, tanyakan pada diri sendiri – apa yang dapat dicapai oleh penyerang sekiranya sistem pengesahan terganggu?

Dan mengikut tindak balas, anda boleh melakukan perkara berikut.

  • Laksanakan pengesahan pelbagai faktor untuk mengelakkan serangan automatik.
  • Galakkan (atau paksa) pengguna untuk menggunakan dasar kata laluan yang baik.
  • Hadkan log masuk yang gagal.
  • Gunakan hash algoritma yang cekap. Semasa memilih algoritma, pertimbangkan panjang kata laluan maksimum.
  • Uji sistem timeout sesi dan pastikan token sesi tidak sah setelah logout.

Kawalan Akses Rosak

Kawalan akses ada untuk memastikan apa yang dibenarkan oleh pengguna yang disahkan. Pengesahan dan pengurusan sesi adalah asas atau peraturan kawalan akses. Tetapi apabila peraturan tersebut tidak ditetapkan dengan baik, ini dapat menimbulkan masalah penting.

Kekurangan kawalan akses yang biasa merangkumi:

  • Salah konfigurasi CORS yang membenarkan akses API yang tidak dibenarkan.
  • Manipulasi metadata untuk mengarahkan akses ke kaedah.
  • Penyemakan paksa: Penyerang akan mencuba URL, mengubah jalan (mis., Http: //website.domain/user/ ke http: //website.domain/admin), dan bahkan dapat menemui fail penting.

Cara mencegahnya?

Sebilangan besarnya, kelemahan akses yang salah berlaku disebabkan oleh ketidaktahuan mengenai keperluan penting pengurusan akses yang berkesan.

  • Tolak secara lalai kecuali sumber awam.
  • Lumpuhkan penyenaraian direktori pelayan dan pastikan fail sandaran tidak ada.
  • Nilaikan had API untuk mengurangkan kesan serangan automatik.
  • Tidak sah token JWT selepas log keluar di bahagian belakang.

Pendedahan Data

Juga disebut sebagai pelanggaran data, pendedahan data adalah ancaman siber yang mengancam perniagaan dan pelanggan mereka.

Ia berlaku apabila aplikasi tidak melindungi maklumat seperti bukti kelayakan atau data sensitif seperti kad kredit atau rekod kesihatan. Lebih daripada 4000 rekod adalah melanggar setiap minit.

Kesan perniagaan adalah besar dari sisi kewangan: Pelanggaran rata-rata boleh menelan belanja USD 3,92 juta, menurut IBM.

Cara mencegahnya?

Sebagai pembangun backend, anda harus bertanya apa maklumat yang memerlukan perlindungan.

Dan kemudian untuk mengelakkan kekurangan seperti itu:

  • Enkripsi data sensitif: Untuk data di REST, enkripsi semuanya. Untuk data dalam perjalanan, pastikan untuk menggunakan gateway selamat (SSL)
  • Kenal pasti data yang memerlukan perlindungan tambahan dan hadkan aksesibilitas hanya kepada sekumpulan pengguna yang sah hanya dengan menerapkan enkripsi berasaskan kunci.
  • Elakkan algoritma penyulitan yang lemah: gunakan yang terkini dan algoritma kuat.
  • Mempunyai rancangan sandaran yang selamat.

Deserisasi tidak selamat

Serialisasi dan deserialisasi adalah konsep yang digunakan ketika data diubah dalam format objek untuk disimpan atau dikirim ke aplikasi lain. Serialisasi terdiri daripada menukar data dalam format objek seperti XML atau JSON untuk menjadikannya dapat digunakan. Deserialisasi hanyalah proses sebaliknya.

Serangan terhadap deserializer dapat menyebabkan penolakan perkhidmatan, kawalan akses, dan serangan eksekusi kod jarak jauh (RCE) jika ada kelas yang dapat diubah untuk mengubah tingkah laku.

Contoh kedua dari dokumen OWASP 10 teratas memberikan gambaran yang baik mengenai penyusun objek PHP:

a: 4: {i: 0; i: 132; i: 1; s: 7:"Mallory"; i: 2; s: 4:"pengguna";
i: 3; s: 32:"b6a8b3bea87fe0e05022f8f3c88bc960";}

Ini adalah supercookie yang mengandungi maklumat seperti ID pengguna, tahap pengguna, dan kata laluan yang dicincang.

Penyerang dapat mengubah objek bersiri untuk mendapatkan akses ke hak istimewa pentadbir:

a: 4: {i: 0; i: 1; i: 1; s: 5:"Alice"; i: 2; s: 5:"pentadbir";
i: 3; s: 32:"b6a8b3bea87fe0e05022f8f3c88bc960";}

Cara mencegahnya?

Penting untuk tidak menerima objek bersiri dari sumber yang tidak dipercayai.

Anda juga harus:

  • Jangan sekali-kali mempercayai input pengguna.
  • Sahkan data: Jika aplikasi anda kecuali rentetan, pastikan itu tali sebelum menggunakannya
  • Gunakan cek untuk memastikan bahawa data belum diubah. Ada baiknya anda mengirim data antara dua sumber yang dipercayai (mis., Menyimpan data pelanggan).

Pelayan XSS

Pelayan XSS (Cross-site scripting) adalah jenis suntikan ketika penyerang menggunakan aplikasi web untuk mengirim kod jahat kepada pengguna yang berbeza. Ia berlaku ketika penyerang memposting beberapa data yang dibuat yang mengandungi kod jahat yang disimpan oleh aplikasi. Kerentanan ini adalah di sisi pelayan; penyemak imbas hanya memberikan respons.

Sebagai contoh, dalam forum, catatan pengguna disimpan dalam pangkalan data, selalunya tanpa pengesahan. Penyerang mengambil kesempatan ini untuk menambah catatan dengan skrip jahat. Selepas itu, pengguna lain menerima pautan ini melalui e-mel atau melihat siaran yang dimaksudkan dan mengkliknya.

Cara mencegahnya?

Setelah mengenal pasti utama semua operasi yang berpotensi berisiko XSS dan yang perlu dilindungi, anda harus mempertimbangkan perkara berikut.

  • Validasi input: periksa panjang input, gunakan pencocokan regex, dan hanya membenarkan sekumpulan watak tertentu.
  • Validasi output: Jika aplikasi menyalin responsnya ke item data yang berasal dari beberapa pengguna atau pihak ketiga, data ini harus dikodekan HTML untuk membersihkan watak yang berpotensi berniat jahat.
  • Benarkan had HTML: sebagai contoh, jika anda mempunyai sistem blog komen, hanya izinkan penggunaan tag tertentu. Sekiranya anda boleh, gunakan kerangka yang sesuai untuk markup HTML yang dibekalkan pengguna untuk memastikan bahawa ia tidak mengandungi cara untuk melaksanakan JavaScript.

Kesimpulannya

Fasa pembangunan sangat penting untuk keselamatan aplikasi web. Dan, anda harus mempertimbangkan untuk memasukkan pengimbas kerentanan keselamatan dalam kitaran hidup pembangunan, sehingga masalah yang dikenal pasti diperbaiki sebelum pengeluaran.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Комментариев нет, будьте первым кто его оставит

    Комментарии закрыты.

    Adblock
    detector