Ilustrasi leadspace Key Protect yang menunjukkan gembok dan kunci di dalam kubus biru yang aman dengan awan dan elemen data lainnya

Apa itu pengodean aman?

Definisi pengodean aman

Pengodean aman, juga disebut sebagai pemrograman aman, adalah praktik penulisan kode sumber yang memberikan perlindungan terhadap serangan siber dari aktor ancaman. Menanamkan keamanan ke dalam kode membantu membatasi kerentanan, dengan menciptakan perangkat lunak yang cukup kuat dan tangguh untuk melawan ancaman siber.

Pemrograman aman adalah bagian penting dari siklus proses pengembangan perangkat lunak aman (secure software development life cycle, SSDLC). Berbeda dengan SDLC tradisional, di mana keamanan hanya berperan selama fase pengujian, SSDLC memasukkan keamanan siber di setiap tahap proses pengembangan perangkat lunak. Keamanan kode bukan hanya fitur tambahan, add-on opsional, atau aspek terpisah, melainkan elemen penting dalam membangun perangkat lunak yang aman.

Pengodean aman juga termasuk dalam lingkup yang lebih luas, yaitu keamanan aplikasi. Pemrograman aman berfokus mengintegrasikan keamanan siber ke dalam kode, sementara keamanan aplikasi mencakup berbagai macam tindakan keamanan—mulai dari perlindungan perangkat keras hingga pertahanan berbasis perangkat lunak—dan melingkupi seluruh SDLC.

Eksploitasi kerentanan telah menjadi penyebab utama serangan, menurut X-Force Threat Intelligence Index 2026 dari IBM. Beralih ke pendekatan yang lebih proaktif dan preventif seperti pengodean aman dapat mendeteksi ancaman sebelum meningkat.

Manfaat pengodean aman

Pemrograman aman menawarkan keunggulan berikut:

  • Efisiensi biaya: Memperbaiki celah keamanan sebelum penerapan jauh lebih murah daripada melakukannya setelah perangkat lunak dirilis.

  • Deteksi dan pencegahan dini: Kerentanan ditemukan dan dieliminasi selama pengembangan untuk mencegahnya menyebar ke tahap produksi.

  • Penghematan waktu dan tenaga: Kode aman dapat membantu menghindari pemborosan waktu dan upaya yang terkait dengan respons insiden dan remediasi untuk sistem yang sedang berjalan.

Kerentanan umum yang ditangani oleh teknik pengodean aman

Kerentanan keamanan pada kode umumnya berasal dari kesalahan desain dan arsitektur perangkat lunak, kesalahan konfigurasi, atau kesalahan pemrograman, dan masih banyak lagi. Pihak yang berniat jahat sering mengeksploitasi kerentanan ini sebagai titik masuk untuk melakukan serangan.

Berikut adalah beberapa kerentanan umum yang ingin diatasi oleh pemrograman aman, berdasarkan daftar risiko keamanan aplikasi web dari Open Worldwide Application Security Project (OWASP):

  • Kegagalan autentikasi

  • Kontrol akses yang rusak

  • Kegagalan kriptografi

  • Serangan injeksi

  • Desain yang tidak aman

  • Kegagalan pencatatan dan peringatan

  • Kesalahan konfigurasi keamanan

  • Kegagalan integritas perangkat lunak atau data

Kegagalan autentikasi

Penjahat siber memanfaatkan kelemahan dalam mekanisme autentikasi untuk mencuri kredensial pengguna dan melakukan aktivitas jahat. Kegagalan autentikasi mencakup kebijakan kata sandi yang lemah, kurangnya metode autentikasi yang kuat, manajemen sesi yang tidak tepat, dan perlindungan yang tidak memadai terhadap skema peretasan kata sandi seperti serangan brute force yang menemukan kata sandi yang benar melalui metode coba-coba atau penjejalan kredensial (credential stuffing) untuk mendapatkan akses ke akun pengguna menggunakan pasangan nama pengguna dan kata sandi yang dibobol.

Kontrol akses yang rusak

Kontrol akses menentukan siapa saja yang diizinkan mengakses data atau sumber daya dan tindakan apa yang boleh mereka lakukan. Kontrol yang rusak atau tidak diterapkan dengan benar dapat menyebabkan akses tidak sah dan penyalahgunaan hak istimewa. Ancamannya dapat berupa pengubahan permintaan API dan parameter URL untuk membobol pemeriksaan kontrol akses atau referensi objek langsung yang tidak aman yang memungkinkan perujukan data atau sumber daya secara langsung menggunakan pengidentifikasi uniknya tanpa memverifikasi izin.

Kegagalan kriptografi

Kelemahan dalam metodologi kriptografi dapat mengekspos data sensitif dan mengakibatkan pelanggaran data. Kegagalan kriptografi mencakup algoritma enkripsi yang usang atau lemah, protokol manajemen kunci yang buruk, penggunaan kunci yang di-hardcode, dan pengiriman atau penyimpanan data tanpa enkripsi yang sesuai.

Serangan injeksi

Serangan injeksi adalah salah satu jenis kerentanan keamanan yang paling umum. Input berbahaya—baik itu kode, perintah, kueri, maupun skrip—dimasukkan ke dalam program atau halaman web untuk meluncurkan malware, memodifikasi data, mencuri informasi pribadi, atau tindakan jahat lainnya. Pembuatan skrip lintas situs, pemalsuan permintaan lintas situs, dan pemalsuan permintaan sisi server adalah beberapa serangan injeksi yang populer.

Cross-site scripting (XSS)

Pembuatan skrip lintas situs (cross-site scripting, XSS) menerapkan kode atau skrip yang tidak tepercaya di situs web tepercaya, yang kemudian dijalankan oleh pengguna yang tidak menaruh curiga. Ini biasanya terjadi ketika aplikasi gagal menghindari, memfilter, menyanitasi, atau memvalidasi data yang disediakan pengguna.

 
Pemalsuan permintaan lintas situs (CSRF atau XSRF)

Pemalsuan permintaan lintas situs (cross-site request forgery, CSRF atau XSRF) mengirimkan permintaan yang tidak sah ke situs web dari pengguna terautentikasi. Kerentanan ini memanfaatkan kepercayaan yang dimiliki situs pada browser web pengguna terautentikasi, dengan menggunakan tautan atau skrip yang mengelabui browser agar mengirim permintaan berbahaya ke situs target.

Pemalsuan permintaan sisi server (SSRF)

Pemalsuan permintaan sisi server (server-side request forgery, SSRF) memanipulasi URL yang dikirim ke server. Ketika server menerima permintaan yang dimanipulasi tanpa terlebih dahulu memvalidasi URL, permintaan tersebut dapat digunakan untuk terhubung ke layanan internal seperti database atau untuk membaca file, konfigurasi server, dan metadata lainnya.

Desain yang tidak aman

Desain yang tidak aman terkait dengan kerentanan yang disebabkan oleh kelemahan dalam logika bisnis atau arsitektur aplikasi. Ini terjadi lebih awal pada SDLC selama fase perencanaan ketika menentukan persyaratan dan memetakan cetak biru sistem. Faktor-faktor seperti tidak adanya penilaian risiko, terbatasnya penggunaan pola desain aman dan arsitektur referensi, dan terbatasnya pemodelan ancaman untuk secara sistematis menganalisis potensi kerentanan keamanan dalam arsitektur yang direncanakan dapat menyebabkan desain yang tidak aman.

Kegagalan pencatatan dan peringatan

Peringatan dan log yang tidak memadai atau tidak efektif dapat menyebabkan serangan dan pelanggaran yang tidak terdeteksi, sehingga aktor ancaman menimbulkan masalah serius. Beberapa contoh kegagalan pencatatan dan peringatan meliputi peristiwa penting yang tidak dicatat atau yang dicatat secara tidak konsisten, penyimpanan log yang tidak aman sehingga rentan terhadap manipulasi atau akses tidak sah, peringatan yang tidak memadai atas serangan aktif real-time atau hampir real-time, pesan log yang tidak jelas atau tidak memiliki detail atau konteks yang cukup, serta log yang berisi data sensitif tanpa disamarkan atau dibersihkan.

Kesalahan konfigurasi keamanan

Kerentanan ini terjadi ketika pengaturan keamanan untuk tumpukan aplikasi—termasuk layanan cloud, database, kerangka kerja, pustaka, sistem operasi, dan server web—dikonfigurasi dengan benar. Kesalahan konfigurasi keamanan dapat berupa penonaktifan pembaruan keamanan, izin yang terlalu luas, kredentif default yang tidak berubah, dan pengaktifan fitur yang tidak perlu.

Kegagalan integritas perangkat lunak atau data

Kegagalan ini terkait dengan kurangnya perlindungan terhadap penerimaan atau pemrosesan data yang tidak valid atau tidak tepercaya dari sumber eksternal. Contohnya antara lain penerapan pembaruan perangkat lunak secara otomatis tanpa memvalidasi integritasnya, penggunaan sumber yang tidak tepercaya untuk dependensi seperti pustaka dan plugin pihak ketiga, dan pipeline CI/CD yang mengambil kode atau artefak pengembangan perangkat lunak lainnya tanpa melalui proses verifikasi.

AI generatif untuk pengodean aman

Beberapa teknologi AI generatif dapat membantu mewujudkan pemrograman yang aman. Sebagai contoh, platform pengodean AI agen seperti Claude Code dan IBM Bob dapat memunculkan kerentanan dan menyarankan perbaikan atas kode tidak aman secara real time. Alat pembuatan kode AI juga dapat membantu memfaktorkan ulang kode guna meningkatkan keamanan.

Meskipun =dapat mengotomatiskan dan mempercepat pengembangan perangkat lunak, asisten pengodean AI masih membutuhkan arahan agar dapat menghasilkan kode yang aman. Pemrogram harus memberikan prompt yang jelas, yang menentukan fungsionalitas sekaligus persyaratan keamanan. Misalnya, prompt umum seperti “buat fungsi login” dapat diperluas menjadi “buat fungsi login yang memeriksa input pengguna untuk format dan panjang yang diharapkan” agar menyertakan instruksi pengodean aman. Panduan dari Open Source Security Foundation berisi contoh instruksi untuk membantu asisten AI mempertimbangkan keamanan kode.

Tim rekayasa perangkat lunak juga dapat memberikan konteks yang mengarahkan AI generatif agar menghasilkan kode yang lebih aman. Retrieval-augmented generation (RAG) menghubungkan alat developer berteknologi AI dengan standar pengodean aman internal. Untuk tim tanpa pedoman yang jelas, aturan keamanan AI dari Secure Code Warrior berguna sebagai titik awal untuk menghasilkan kode buatan AI yang lebih aman.

Seperti halnya asisten AI, agen pengodean AI juga memerlukan panduan. Project CodeGuard menawarkan seperangkat aturan dan kerangka kerja keterampilan yang menyematkan praktik pengodean aman langsung ke dalam alur kerja agen. Agen pengodean AI dapat menggunakan aturan dan keterampilan ini selama fase perencanaan sebagai bagian dari tujuannya dan selama fase eksekusi saat menulis kode.

Kode yang dihasilkan oleh kecerdasan buatan sendiri dapat menimbulkan kerentanan, sehingga keputusan akhir terkait akurasi dan keamanan tetap berada di tangan pemrogram manusia. Langkah-langkah AI generatif juga harus dikombinasikan dengan praktik terbaik pengodean aman berikut untuk membangun beberapa lapisan perlindungan.

Praktik terbaik pengodean aman

Praktik terbaik dalam pengodean aman mencakup berbagai strategi pemrograman defensif untuk memperkuat keamanan perangkat lunak. Perusahaan mungkin kesulitan saat menyeimbangkan pengodean aman dengan kecepatan pengiriman. Namun, banyak dari praktik ini mengintegrasikan keamanan ke dalam kode tanpa mengorbankan pengiriman cepat, misalnya menggabungkan keamanan ke dalam fase desain, menetapkan pedoman pengodean aman, melatih pengembang sehingga mereka diperlengkapi untuk mengidentifikasi dan memperbaiki kelemahan keamanan selama pembuatan kode, dan mengotomatiskan analisis kode dan pengujian untuk menemukan kerentanan.

Meskipun mustahil untuk menyebutkan semua praktik terbaik pengodean aman yang ada, daftar ini dapat menjadi titik awal. Selain itu, Anda dapat mengombinasikan praktik-praktik berikut untuk meningkatkan postur keamanan organisasi:

  • Mengikuti standar pengodean aman

  • Mengintegrasikan keamanan ke dalam desain

  • Memvalidasi dan menyanitasi input serta mengenkode output

  • Menerapkan protokol kriptografi yang kuat

  • Melakukan autentikasi dan otorisasi

  • Menyediakan pencatatan yang kuat dan mekanisme penanganan kesalahan yang aman

  • Melakukan pengujian keamanan secara menyeluruh

  • Menambahkan keamanan sebagai bagian dari tinjauan kode

Mengikuti standar pengodean aman

Standar ini berfungsi sebagai panduan dasar untuk mengintegrasikan teknik pengodean aman secara efektif ke dalam alur kerja pengembangan yang ada. Standar ini juga menyediakan dasar bersama untuk pemrograman yang aman di berbagai proyek perangkat lunak.

OWASP Developer Guide

OWASP Developer Guide adalah referensi bagi pemrogram untuk membantu mereka menavigasi dan membuat kode sumber yang aman. Panduan ini menguraikan praktik pengodean aman yang tidak bergantung pada teknologi, dengan poin-poin keamanan kode utama disorot dalam daftar periksa yang diambil dari arsip OWASP Secure Coding Practices Quick Reference Guide.

OWASP juga menyediakan serangkaian daftar referensi untuk menerapkan prinsip-prinsip pengodean yang aman dan memerangi berbagai macam kerentanan kode.

SEI CERT Coding Standards

Diciptakan oleh Carnegie Mellon University’s Software Engineering Institute, SEI CERT Coding Standards memberikan panduan pemrograman aman dalam bahasa pemrograman Android, C, C++, Java, dan Perl sebagai bahasa pemrograman. Standar ini berisi aturan, rekomendasi, dan contoh kode yang sesuai dan tidak sesuai. Aturan dan rekomendasi memiliki penilaian risiko terkait yang dikategorikan menurut tingkat keparahan, kemungkinan, dan biaya remediasi untuk membantu tim rekayasa perangkat lunak memprioritaskan upaya mereka.

NIST Secure Software Development Framework

Selain Cybersecurity Framework untuk manajemen risiko keamanan informasi dan manajemen risiko keamanan siber, National Institute of Standards and Technology (NIST) juga telah menerbitkan Secure Software Development Framework. Kerangka kerja ini terdiri dari praktik pengembangan perangkat lunak yang aman, berbasis hasil, dan berstandar tinggi, menjadikannya sebagai pelengkap ideal bagi standar OWASP dan SEI CERT yang lebih teknis.

Mengintegrasikan keamanan ke dalam desain

Membangun desain yang aman ke dalam cetak biru sistem selaras dengan pendekatan “shift left” untuk memindahkan keamanan di awal proses pengembangan perangkat lunak. Pendekatan ini mempertimbangkan cara untuk mengamankan perangkat lunak, bahkan sebelum baris pertama kode ditulis.

 

Penilaian risiko yang komprehensif dan pemodelan ancaman dapat membantu memunculkan potensi kerentanan keamanan dalam arsitektur perangkat lunak. Tahap desain yang aman juga harus menghadirkan tim keamanan dalam kolaborasi langsung serta memberikan panduan tentang persyaratan keamanan dan cara menanganinya di tingkat kode sumber.

Untuk mendapatkan informasi lebih lanjut tentang integrasi keamanan ke dalam desain, tim dapat mengakses daftar referensi OWASP tentang desain produk yang aman dan pemodelan ancaman serta Secure by Design Framework.

Memvalidasi dan menyanitasi input serta mengenkode output

Prinsip pengodean aman inti adalah: jangan pernah mempercayai input apa pun, contohnya dalam serangan injeksi. Validasi dan sanitasi sisi server membantu memastikan input tidak menimbulkan risiko keamanan sebelum diproses.

Tim rekayasa perangkat lunak dapat menempatkan semua logika validasi dan sanitasi dalam file atau lokasi pusat yang aman untuk menjaga konsistensi serta mempercepat dan mempermudah akses dan pembaruan. Mereka juga dapat menggunakan modul validasi dan sanitasi yang diintegrasikan ke dalam bahasa pemrograman dan kerangka kerja. Akan tetapi, modul ini harus diperbarui secara teratur untuk mengatasi kerentanan yang baru ditemukan.

Memvalidasi input

Validasi input memeriksa apakah jenis data, format, panjang, rentang, ukuran, dan batasan lainnya sudah benar. Hal ini mungkin melibatkan pencocokan input dengan pola yang disetujui atau membandingkannya dengan serangkaian karakter atau nilai yang diizinkan.

Menyanitasi input

Sanitasi input memerlukan pembersihan dan pengubahan input menjadi bentuk yang aman. Tindakan ini harus disesuaikan dengan bahasa pemrograman atau kerangka kerja yang relevan.

Dalam HTML, misalnya, menghindari karakter khusus seperti &, <, >, “, dan ‘ dapat membantu mencegah XSS. Pustaka seperti DOMPurify dapat membantu sanitasi HTML.

Untuk database, menggabungkan kueri parameter dengan pernyataan yang disiapkan dapat membantu mencegah serangan injeksi SQL karena input diperlakukan sebagai data, bukan sebagai kode SQL yang dapat dijalankan secara tidak sengaja. Kueri yang diparameterisasi pertama-tama menetapkan semua kode SQL, dengan placeholder untuk input atau parameter, kemudian meneruskan setiap parameter ke kueri pada langkah selanjutnya. Pernyataan yang disiapkan adalah pernyataan SQL yang telah dikompilasi sebelumnya. Ini berarti bahwa perintah SQL yang diinjeksikan tidak dapat mengubah maksud kueri atau cara menjalankannya.

Mengenkode output

Enkode output memungkinkan data ditampilkan dengan aman sebagai teks sehingga tidak akan ditafsirkan sebagai kode. Banyak kerangka kerja dilengkapi dengan perlindungan enkode output default atau fungsi enkode dan penghindaran otomatis. OWASP Java Encoder mendukung enkode output kontekstual untuk berbagai konteks, misalnya menempatkan variabel ke dalam URL, CSS inline, atau JavaScript inline, dan memasukkan variabel ke dalam nilai atribut HTML, properti CSS, atau di antara dua tag HTML.

Menerapkan protokol kriptografi yang kuat

Jika diterapkan dengan benar, kriptografi melindungi kerahasiaan, integritas, dan ketersediaan informasi.

Algoritma

Pemrogram harus menggunakan algoritma yang kuat dan terkini saat mengenkripsi data yang sedang dikirim dan data yang sedang disimpan. AES dianggap sebagai standar emas untuk enkripsi simetris, dengan mode terautentikasi dan kunci 256-bit yang memberikan keamanan tingkat tinggi. Untuk enkripsi asimetris, ECC dengan kurva aman atau RSA dengan padding acak diaktifkan dan setidaknya kunci 2048-bit memberikan keamanan yang kuat.

Untuk melindungi kata sandi, algoritma hashing harus diterapkan dan salt—string unik yang dibuat secara acak—ditambahkan ke kata sandi sebagai bagian dari proses hashing. Algoritma hashing adalah fungsi matematika satu arah yang mengubah data menjadi nilai panjang yang unik, lebih pendek, dan berukuran tetap, yang tidak dapat didekodekan atau direkayasa balik. Algoritma hashing modern mencakup Argon2id dan scrypt.

Alih-alih membuat sendiri, pengembang harus mengadopsi implementasi pustaka kriptografi yang andal, didukung, dan terpelihara, seperti Bouncy Castle, Libsodium, OpenSSL dan Tink.

Kunci dan manajemen kunci

Kunci tidak boleh di-hardcode ke dalam kode sumber, dimasukkan ke dalam sistem kontrol versi, disimpan dalam variabel lingkungan, atau diekspos dalam log. Solusi dan teknologi manajemen kunci dapat membantu mengotomatiskan siklus proses manajemen kunci—mulai dari pembuatan, distribusi, dan penyimpanan hingga penggunaan, rotasi, pencabutan, dan penghancuran.

Perlindungan lapisan transportasi

Dalam hal perlindungan lapisan transport, tim rekayasa perangkat lunak harus menggunakan protokol seperti Hypertext Transfer Protocol Secure (HTTPS) atau HTTP Strict Transport Security (HSTS) dan TLS versi terbaru. Caching data sensitif harus dinonaktifkan, dan penyimpanan data sensitif yang tidak perlu harus dihindari.

Autentikasi dan otorisasi

Autentikasi dan otorisasi adalah praktik pengodean aman yang penting untuk memverifikasi identitas suatu entitas dan memastikan bahwa entitas tersebut memiliki tingkat akses yang tepat.

Autentikasi

Autentikasi multifaktor (multifactor authentication, MFA) adalah salah satu pertahanan terbaik terhadap serangan terkait kata sandi. Mekanisme lain termasuk pembatasan (throttling) login untuk mencegah peretas menebak kata sandi terlalu sering dan penguncian akun untuk menghentikan upaya login dalam jangka waktu tertentu setelah sejumlah login gagal.

Untuk autentikasi tanpa kata sandi, pengembang dapat mempertimbangkan protokol seperti OpenID Connect (OIDC) dan Security Assertion Markup Language (SAML). FIDO dan FIDO2 adalah standar terbuka yang memfasilitasi autentikasi tanpa kata sandi melalui kunci sandi (passkey) serta dapat digunakan untuk mengautentikasi aplikasi, layanan online, dan situs web.

Manajemen sesi

Setelah sesi terautentikasi berhasil dibuat, sesi tersebut harus dipertahankan melalui ID atau token sesi yang aman. ID sesi harus dibuat menggunakan generator nomor pseudorandom yang kuat dan aman secara kriptografis. Seperti halnya input pengguna lainnya, ID atau token sesi harus divalidasi sebelum diproses, dan nilai yang tidak valid dihilangkan.

Menetapkan batas waktu kedaluwarsa untuk setiap sesi akan membatasi durasi pembajakan sesi aktif dan peluncuran serangan oleh pihak yang berniat jahat. Tim rekayasa perangkat lunak dapat menggunakan fungsionalitas manajemen sesi bawaan yang disediakan oleh kerangka kerja pengembangan web.

Otorisasi

Pemrogram dapat menggunakan protokol otorisasi seperti OAuth, yang beroperasi bersamaan dengan protokol autentikasi OIDC. Dalam hal kontrol akses, kontrol akses berbasis peran (role-based access control, RBAC) adalah model yang populer. Dengan RBAC, pengguna diberikan akses berdasarkan peran yang telah ditentukan sebelumnya. Opsi lain yang bisa lebih kuat dan mendukung izin yang lebih mendetail adalah kontrol akses berbasis atribut (attribute-based access control, ABAC) dan kontrol akses berbasis hubungan (relationship-based access control, ReBAC). ABAC menganalisis atribut tindakan, objek, dan pengguna—contohnya nama pengguna, jenis sumber daya, dan waktu—untuk menentukan apakah akses akan diberikan. ReBac memberikan akses berdasarkan hubungan antara sumber daya.

 

Meskipun protokol dan model kontrol akses sudah ada, izin tetap harus divalidasi untuk setiap permintaan dan pemeriksaan kontrol akses harus dilakukan untuk setiap objek yang ingin diakses oleh entitas. Menolak akses secara default dan menerapkan hak istimewa terendah juga merupakan prinsip pengodean aman yang penting dalam otorisasi.

Menyediakan pencatatan yang kuat dan mekanisme penanganan kesalahan yang aman

Log dan pesan kesalahan dapat menjadi sumber informasi berguna bagi pihak yang berniat jahat untuk merancang serangan. Ini berarti log dan kesalahan harus ditangani dengan hati-hati.

Pencatatan

Kesalahan aplikasi, peristiwa sistem yang terkait dengan perubahan konfigurasi dan tindakan admin atau hak istimewa, dan peristiwa kegagalan di bidang autentikasi, otorisasi, validasi input, dan manajemen sesi harus dicatat karena dapat mengindikasikan upaya pelanggaran. Sertakan cukup informasi, seperti detail pengguna (identitas, peran, dan izin) dan konteks kesalahan atau peristiwa (target, tindakan, dan hasil), untuk membantu analisis dan debugging.

Log harus ditulis ke media hanya baca dan disimpan di lokasi yang aman dengan akses terbatas dan deteksi gangguan bawaan. Jika log perlu dikirim ke sistem lain, protokol transmisi yang aman harus digunakan.

Data sensitif tidak boleh dicatat dan harus dibersihkan (scrubbing) atau dihapus dari log. Informasi lain yang dianggap penting, seperti string koneksi database, jalur file, nama dan alamat jaringan internal, serta ID atau token sesi harus dienkripsi, di-hash, atau disamarkan.

Pustaka pencatatan harus diperbarui secara berkala demi memastikan kelemahan keamanan ditambal. Contohnya adalah kerentanan Log4Shell yang berdampak pada pustaka pencatatan sumber terbuka, Log4j, sehingga memungkinkan peretas menjalankan hampir semua kode yang mereka inginkan pada sistem yang terdampak.

Penanganan kesalahan

Penanganan kesalahan dijalankan bersamaan dengan pencatatan karena informasi tentang kesalahan biasanya muncul di log. Selain itu, kesalahan yang tidak tertangani dapat berfungsi sebagai port masuk bagi aktor ancaman.

Pengembang dapat mempertimbangkan untuk membuat pengendali kesalahan global yang menampilkan respons umum atau kode kesalahan untuk kesalahan yang tidak terduga, kemudian mencatat detail lebih lanjut tentang kesalahan di sisi server. Hal ini dapat menghindari kebocoran informasi kepada peretas sekaligus menangani kesalahan dengan aman, serta menyediakan temuan yang diperlukan pemrogram untuk penyelidikan lebih lanjut.

Melakukan pengujian keamanan secara menyeluruh

Semua tindakan keamanan yang disematkan ke dalam kode sumber harus diverifikasi. Tim QA dan pengembangan dapat menggunakan Web Security Testing Guide dan Application Security Verification Standard dari OWASP sebagai dasar pengujian keamanan kode. Alat otomatis juga dapat membantu proses ini.

Pengujian keamanan aplikasi statis (SAST)

Pengujian keamanan aplikasi statis (static application security testing, SAST) menerapkan aturan yang telah ditentukan untuk menemukan pola dalam kode yang menunjukkan kemungkinan kerentanan. SAST terkadang disebut pengujian “kotak putih”, sementara alat SAST juga dikenal sebagai penganalisis kode statis karena alat ini dapat memindai kode tanpa perlu menjalankan aplikasi.

Alat SAST unggul untuk menandai kerentanan kode umum dan dapat menentukan nomor baris dan file kerentanan yang ditemukannya. Alat ini juga terintegrasi dengan mulus dengan sebagian besar IDE dan lingkungan CI/CD. Namun, SAST cenderung menghasilkan positif palsu.

Pengujian keamanan aplikasi dinamis (DAST)

Pengujian keamanan aplikasi dinamis (dynamic application security testing, DAST) mengambil pendekatan dari luar ke dalam, dengan mengevaluasi aplikasi di lingkungan waktu prosesnya menggunakan serangan simulasi untuk meniru tindakan aktor ancaman di dunia nyata. Dengan demikian, DAST sering disebut sebagai pengujian kotak hitam karena penguji tidak perlu mengetahui atau mengakses cara kerja internal atau kode sumber sistem. DAST biasanya menghasilkan positif palsu yang lebih rendah daripada SAST.

Penggabungan SAST dan DAST dapat mengungkap gambaran yang lebih lengkap tentang potensi kerentanan. Untuk pengujian keamanan yang lebih komprehensif, SAST dan DAST dapat dikombinasikan dengan metode lain, seperti pengujian keamanan aplikasi interaktif (interactive application security testing, IAST) yang menilai konteks kode dan perilaku waktu proses untuk melaporkan kerentanan secara real time dan analisis komposisi perangkat lunak (software composition analysis, SCA) yang menganalisis perangkat lunak guna memastikan komponennya aman dan terkini.

Menambahkan keamanan sebagai bagian dari tinjauan kode

Sebagian besar tinjauan kode berfokus pada kualitas, dengan memeriksa kepatuhan kode terhadap pedoman gaya, masalah logis, alur optimal, serta pengujian dan cakupan kasus ekstrem. Namun, keamanan juga harus menjadi bagian dari proses tinjauan kode.

Tinjauan kode yang aman merupakan garis pertahanan berikutnya setelah penganalisis kode statis. Peninjau kode manusia memiliki keahlian domain, pertimbangan, dan wawasan tentang kerentanan keamanan kode yang sering dilewatkan oleh alat otomatis.

Untuk pendekatan yang lebih terstruktur, peninjau kode dapat membaca lembar referensi tinjauan kode aman dari OWASP.

Akademi AI

Bangkitnya AI generatif untuk bisnis

Pelajari tentang sejarah kebangkitan AI generatif dan apa pengaruhnya bagi bisnis.

Penyusun

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Solusi terkait
IBM Bob

Percepat pengiriman perangkat lunak dengan Bob, mitra AI Anda untuk pengembangan yang aman dan memahami maksud.

Jelajahi IBM® Bob
Solusi pengodean AI

Optimalkan upaya pengembangan perangkat lunak dengan alat berbasis AI tepercaya yang meminimalkan waktu yang dihabiskan untuk menulis kode, debugging, pemfaktoran ulang kode, atau penyelesaian kode dan membuat lebih banyak ruang untuk inovasi.

Jelajahi solusi pengodean AI
Konsultasi dan layanan AI

Ciptakan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara waktu nyata, dan nilai bisnis.

Jelajahi layanan konsultasi AI
Ambil langkah selanjutnya

Manfaatkan AI generatif dan otomatisasi canggih untuk membuat kode perusahaan siap pakai lebih cepat. Model Bob untuk menambah keahlian pengembang, menyederhanakan dan mengotomatiskan upaya pengembangan dan modernisasi Anda.

  1. Jelajahi IBM Bob
  2. Jelajahi solusi pengodean AI