Standar Teknis Keamanan Aplikasi Berbasis Web
Badan Siber dan Sandi Negara (BSSN) telah menerbitkan standar teknis keamanan aplikasi berbasis web yang tertuang dalam Peraturan BSSN Nomor 4 Tahun 2021 tentang Pedoman Manajemen Keamananan Informasi Sistem Pemerintahan Berbasis Elektronik dan Standar Teknis dan Prosedur Keamanan Sistem Pemerintahan Berbasis Elektronik.
- a. Autentikasi
- b. Manajemen Sesi
- c. Persyaratan Kontrol Akses
- d. Validasi Input
- e. Kriptografi pada Verifikasi Statis
- f. Penanganan Eror dan Pencatatan Log
- g. Proteksi Data
- h. Keamanan Komunikasi
- i. Pengendalian Kode Berbahaya
- j. Logika Bisnis
- k. Keamanan File
- l. Keamanan API dan Web Service
- m. Keamanan Konfigurasi
a. Autentikasi
Autentikasi dilakukan dengan:
- menggunakan manajemen kata sandi untuk proses autentikasi;
- menerapkan verifikasi kata sandi pada sisi server;
- mengatur jumlah karakter, kombinasi jenis karakter, dan masa berlaku dari kata sandi;
- jumlah karakter minimal 12 karakter;
- kombinasi jenis karakter minimal terdiri dari huruf besar, huruf kecil, simbol dan angka, tidak ada perulangan karakter;
- masa berlaku dari kata sandi minimal 6 bulan, dan tidak ada perulangan kata sandi
- mengatur jumlah maksimum kesalahan dalam pemasukan kata sandi;
- mengatur mekanisme pemulihan kata sandi;
- menjaga kerahasiaan kata sandi yang disimpan melalui mekanisme kriptografi; dan
- menggunakan jalur komunikasi yang diamankan untuk proses autentikasi.
b. Manajemen Sesi
Manajemen sesi dilakukan dengan:
- menggunakan pengendali sesi untuk proses manajemen sesi;
- menggunakan pengendali sesi yang disediakan oleh kerangka kerja aplikasi;
- mengatur pembuatan dan keacakan token sesi yang dihasilkan oleh pengendali sesi;
- mengatur kondisi dan jangka waktu habis sesi;
- validasi dan pencantuman session id;
- pelindungan terhadap lokasi dan pengiriman token untuk sesi terautentikasi; dan
- pelindungan terhadap duplikasi dan mekanisme persetujuan pengguna.
c. Persyaratan Kontrol Akses
Persyaratan kontrol akses dilakukan dengan prosedur:
- menetapkan otorisasi pengguna untuk membatasi kontrol akses;
- mengatur peringatan terhadap bahaya serangan otomatis apabila terjadi akses yang bersamaan atau akses yang terus-menerus pada fungsi;
- mengatur antarmuka pada sisi administrator; dan
- mengatur verifikasi kebenaran token ketika mengakses data dan informasi yang dikecualikan
d. Validasi Input
Validasi input dilakukan dengan prosedur:
- menerapkan fungsi validasi input pada sisi server;
- menerapkan mekanisme penolakan input jika terjadi kesalahan validasi;
- memastikan runtime environment aplikasi tidak rentan terhadap serangan validasi input;
- melakukan validasi positif pada seluruh input;
- melakukan filter terhadap data yang tidak dipercaya;
- menggunakan fitur kode dinamis;
- melakukan pelindungan terhadap akses yang mengandung konten skrip; dan
- melakukan pelindungan dari serangan injeksi basis data.
e. Kriptografi pada Verifikasi Statis
Kriptografi pada verifikasi statis sebagaimana dilakukan dengan prosedur:
- menggunakan algoritma kriptografi, modul kriptografi, protokol kriptografi, dan kunci kriptografi sesuai dengan ketentuan peraturan perundang-undangan;
- melakukan autentikasi data yang dienkripsi;
- menerapkan manajemen kunci kriptografi; dan
- membuat angka acak yang menggunakan generator angka acak kriptografi.
f. Penanganan Eror dan Pencatatan Log
Penanganan eror dan pencatatan log dilakukan dengan prosedur:
- mengatur konten pesan yang ditampilkan ketika terjadi kesalahan;
- menggunakan metode penanganan eror untuk mencegah kesalahan terprediksi dan tidak terduga serta menangani seluruh pengecualian yang tidak ditangani;
- mengatur cakupan log yang dicatat untuk mendukung upaya penyelidikan ketika terjadi insiden;
- mengatur pelindungan log aplikasi dari akses dan modifikasi yang tidak sah;
- melakukan enkripsi pada data yang disimpan untuk mencegah injeksi log; dan
- melakukan sinkronisasi sumber waktu sesuai dengan zona waktu dan waktu yang benar.c. tidak mencantumkan informasi yang dikecualikan dalam pencatatan log;
- mengatur cakupan log yang dicatat untuk mendukung upaya penyelidikan ketika terjadi insiden;
- mengatur pelindungan log aplikasi dari akses dan modifikasi yang tidak sah;
- melakukan enkripsi pada data yang disimpan untuk mencegah injeksi log; dan
- melakukan sinkronisasi sumber waktu sesuai dengan zona waktu dan waktu yang benar.
g. Proteksi Data
Proteksi data dilakukan dengan prosedur:
- melakukan identifikasi dan penyimpanan salinan informasi yang dikecualikan;
- melakukan pelindungan dari akses yang tidak sah terhadap informasi yang dikecualikan yang disimpan sementara dalam aplikasi;
- melakukan pertukaran, penghapusan, dan audit informasi yang dikecualikan;
- melakukan penentuan jumlah parameter dengan meminimalkan parameter yang di butuhkan untuk request kepada server
- memastikan data disimpan dengan aman;
- menentukan metode untuk menghapus dan mengekspor data sesuai permintaan pengguna; dan
- membersihkan memori setelah tidak diperlukan.
h. Keamanan Komunikasi
Keamanan komunikasi dilakukan dengan prosedur:
- menggunakan komunikasi terenkripsi;
- mengatur koneksi masuk dan keluar yang aman dan terenkripsi dari sisi pengguna;
- mengatur jenis algoritma yang digunakan dan alat pengujiannya; dan
- mengatur aktivasi dan konfigurasi sertifikat elektronik yang diterbitkan oleh penyelenggara sertifikasi elektronik.
i. Pengendalian Kode Berbahaya
Pengendalian kode berbahaya dilakukan dengan prosedur:
- menggunakan analisis kode dalam kontrol kode berbahaya;
- memastikan kode sumber aplikasi dan pustaka tidak mengandung kode berbahaya dan fungsionalitas lain yang tidak diinginkan;
- mengatur izin terkait fitur atau sensor terkait privasi;
- mengatur pelindungan integritas; dan
- mengatur mekanisme fitur pembaruan.
j. Logika Bisnis
Logika bisnis dilakukan dengan prosedur:
- memproses alur logika bisnis dalam urutan langkah dan waktu yang realistis;
- memastikan logika bisnis memiliki batasan dan validasi;
- memonitor aktivitas yang tidak biasa;
- membantu dalam kontrol antiotomatisasi; dan
- memberikan peringatan ketika terjadi serangan otomatis atau aktivitas yang tidak biasa.
k. Keamanan File
Keamanan file dilakukan dengan prosedur:
- mengatur jumlah file untuk setiap pengguna dan kuota ukuran file yang diunggah;
- melakukan validasi file sesuai dengan tipe konten yang diharapkan;
- melakukan pelindungan terhadap metadata input dan metadata file;
- melakukan pemindaian file yang diperoleh dari sumber yang tidak dipercaya; dan
- melakukan konfigurasi server untuk mengunduh file sesuai ekstensi yang ditentukan.
l. Keamanan API dan Web Service
Keamanan API dan web service dilakukan dengan prosedur:
- melakukan konfigurasi layanan web;
- memverifikasi uniform resource identifier API tidak menampilkan informasi yang berpotensi sebagai celah keamanan;
- membuat keputusan otorisasi;
- menampilkan metode RESTful hypertext transfer protocol apabila input pengguna dinyatakan valid;
- menggunakan validasi skema dan verifikasi sebelum menerima input;
- menggunakan metode pelindungan layanan berbasis web; dan
- menerapkan kontrol antiotomatisasi.
m. Keamanan Konfigurasi
Keamanan konfigurasi dilakukan dengan prosedur:
- mengonfigurasi server sesuai rekomendasi server aplikasi dan kerangka kerja aplikasi yang digunakan;
- mendokumentasi, menyalin konfigurasi, dan semua dependensi;
- menghapus fitur, dokumentasi, sampel, dan konfigurasi yang tidak diperlukan;
- memvalidasi integritas aset jika aset aplikasi diakses secara eksternal; dan
- menggunakan respons aplikasi dan konten yang aman.