IT-SOP-20


1. Tujuan

Tujuan dari prosedur Secure Coding adalah untuk membantu organisasi menghasilkan perangkat lunak yang lebih aman, andal, dan sesuai dengan persyaratan keamanan informasi yang berlaku.

2. Ruang lingkup

SOP ini berlaku untuk seluruh proses pengembangan perangkat lunak (software development lifecycle) di lingkungan organisasi, termasuk aplikasi internal, aplikasi eksternal (untuk pelanggan), API, dan modul perangkat lunak pihak ketiga yang diintegrasikan.

3. Tanggung jawab

Developer bertanggung jawab atas penerapan prosedur ini.

4. Definisi

4.1 Secure Coding adalah Praktik pengkodean yang bertujuan untuk mencegah kelemahan keamanan.

4.2 OWASP Top 10 adalah Sepuluh jenis kerentanan aplikasi yang paling umum menurut Open Worldwide Application Security Project (OWASP).

4.3 SDLC adalah Software Development Life Cycle – Siklus hidup pengembangan perangkat lunak

4.4 Serangan keamanan adalah upaya yang dilakukan oleh penyerang atau pihak yang tidak sah untuk menembus atau mengeksploitasi kelemahan dalam sistem komputer, jaringan, aplikasi, atau infrastruktur TI lainnya dengan tujuan untuk memperoleh akses yang tidak sah, mencuri informasi sensitif, merusak atau mengganggu layanan, atau menciptakan kerugian lainnya**.**

5. Referensi

ISO/IEC 27001:2022 A.8.28 Pengkodean yang Aman (Secure Coding)

6. Prosedur

6.1. Memahami Risiko

Tim pengembang & Tim keamanan informasi wajib memahami risiko keamanan yang mungkin terjadi dalam aplikasi yang tengah dikembangkan. Hal Ini mencakup pemahaman tentang kerentanan umum yang dapat dieksploitasi, seperti serangan injeksi SQL, XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery), dll.

6.2. Menyusun Daftar Standar Secure Coding

Tim pengembang & tim keamanan informasi menyusun daftar standar secure coding (mengacu OWASP Top 10) dan ditinjau setiap 6 bulan sekali atau sesuai kebutuhan perusahaan.

6.3. Memilih Framework yang Aman

Tim pengembang memilih framework atau bahasa pemrograman yang memiliki fitur keamanan bawaan atau memfasilitasi praktik pengembangan yang aman.

6.4. Melakukan Validasi Input

Tim pengembang wajib melakukan validasi semua input yang diterima aplikasi, baik dari pengguna, API, atau sumber eksternal lainnya untuk mencegah serangan injeksi.

6.5. Menggunakan Parameterized Statements

Tim Pengembangan harus menggunakan parameterized statements atau prepared statements dalam query SQL untuk menghindari serangan injeksi SQL.

6.6. Menghindari Hardcoding Kredensial

Menghindari menyimpan kredensial atau informasi sensitif lainnya secara langsung dalam kode sumber.

6.7. Mengunakan Enkripsi

Mengenkripsi data sensitif saat disimpan di database atau dalam perjalanan melalui jaringan.

6.8. Mengelola Session yang Aman

Menerapkan praktik session management yang aman, termasuk menggunakan token yang kuat, menetapkan waktu kadaluarsa session yang wajar, dan memastikan bahwa session ID tidak mudah diprediksi atau dicuri.

6.9. Mengatasi Error yang Aman

mengatasi error secara hati-hati untuk menghindari pemberian informasi sensitif kepada penyerang.

6.10. Memindai Kode

Melakukan pemindaian kode secara berkala dengan alat otomatis untuk mendeteksi kerentanan dan celah keamanan.

6.11. Memeriksa Kode

Melakukan pemeriksaan kode secara berkala oleh rekan sejawat untuk mengidentifikasi dan memperbaiki kerentanan yang ada.

6.12. Melakukan pembaharuan software secara berkala

Memperbarui perangkat lunak dan dependensi secara berkala untuk memperbaiki kerentanan yang diketahui