5 Pertimbangan Keamanan Saat Coding

1. Pemeriksaan Masukan

Selalu periksa input pengguna untuk memastikan bahwa itu yang Anda harapkan. Pastikan tidak mengandung karakter atau data lain yang mungkin diperlakukan dengan cara khusus oleh program Anda atau program apa pun yang dipanggil oleh program Anda. Hal ini sering melibatkan pemeriksaan karakter seperti tanda kutip, dan pemeriksaan karakter input yang tidak biasa seperti non- karakter alfanumerik di mana string teks diharapkan. Seringkali, ini adalah tanda dari beberapa jenis serangan yang sedang dicoba.


2.Pemeriksaan Jangkauan

Selalu periksa rentang saat menyalin data, mengalokasikan memori, atau melakukan operasi apa pun yang berpotensi meluap. Beberapa bahasa pemrograman menyediakan akses wadah yang diperiksa jangkauannya (seperti std::vector::at() dalam C++, tetapi banyak programmer bersikeras menggunakan notasi indeks array yang tidak dicentang []. Selain itu, penggunaan fungsi seperti strcpy( ) harus dihindari daripada strncpy(), yang memungkinkan Anda untuk menentukan jumlah maksimum karakter yang akan disalin. Versi fungsi yang serupa seperti snprintf() sebagai lawan dari sprintf() dan fgets() alih-alih get() memberikan yang setara spesifikasi panjang buffer. Penggunaan fungsi tersebut di seluruh kode Anda harus mencegah buffer overflows. Bahkan jika string karakter Anda berasal dari dalam program, dan Anda pikir Anda bisa lolos dengan strcpy() karena Anda tahu panjang string, itu tidak berarti untuk mengatakan bahwa Anda, atau orang lain, tidak akan mengubah banyak hal di masa mendatang dan mengizinkan string untuk ditentukan dalam file konfigurasi, pada baris perintah, atau dari input pengguna langsung. rentang-memeriksa semuanya harus mencegah besar e jumlah kerentanan keamanan dalam perangkat lunak Anda.


3.Prinsip Keistimewaan Terkecil

Ini sangat penting jika program Anda berjalan sebagai root untuk bagian mana pun dari runtime-nya. Jika memungkinkan, sebuah program harus menghapus semua hak istimewa yang tidak diperlukan, dan menggunakan hak istimewa yang lebih tinggi hanya untuk operasi yang memerlukannya. Contohnya adalah server surat Postfix, yang memiliki desain modular yang memungkinkan bagian-bagian yang memerlukan hak akses root untuk dijalankan secara berbeda dari bagian-bagian yang tidak. Bentuk pemisahan hak istimewa ini mengurangi jumlah jalur serangan yang mengarah ke hak akses root, dan meningkatkan keamanan seluruh sistem karena beberapa jalur yang tersisa dapat dianalisis secara kritis untuk masalah keamanan.


4. Jangan Balap

Kondisi balapan adalah situasi di mana program melakukan operasi dalam beberapa langkah, dan penyerang memiliki kesempatan untuk menangkapnya di antara langkah-langkah dan mengubah status sistem. Contohnya adalah program yang memeriksa izin file, lalu membuka file. Di antara pemeriksaan izin panggilan stat() dan file buka panggilan fopen() penyerang dapat mengubah file yang sedang dibuka dengan mengganti nama file lain ke nama file asli. Untuk mencegah hal ini, fopen() file terlebih dahulu, lalu gunakan fstat(), yang menggunakan deskriptor file alih-alih nama file. Karena deskriptor file selalu menunjuk ke file yang dibuka dengan fopen(), bahkan jika nama file kemudian diubah, panggilan fstat() akan dijamin untuk memeriksa izin dari file yang sama. Banyak kondisi balapan lain yang ada, dan seringkali ada cara untuk mencegahnya dengan memilih urutan eksekusi fungsi tertentu secara hati-hati.


5. Daftarkan Penangan Kesalahan

Banyak bahasa mendukung konsep fungsi yang dapat dipanggil ketika kesalahan terdeteksi, atau konsep pengecualian yang lebih fleksibel. Manfaatkan ini untuk menangkap kondisi yang tidak terduga dan kembali ke titik aman dalam kode, alih-alih maju secara membabi buta dengan harapan input pengguna tidak akan merusak program, atau lebih buruk lagi!

Komentar

Postingan Populer