Sebagai pengaturcara atau pembangun, kepentingan mencipta aplikasi selamat tidak boleh diabaikan.
Keselamatan perisian menangani pengurusan serangan berniat jahat dengan mengenal pasti potensi kelemahan dalam perisian dan mengambil langkah berjaga-jaga yang perlu untuk melindunginya.
Perisian tidak boleh 100% selamat kerana pembangun boleh mengabaikan pepijat, memperkenalkan pepijat baharu semasa membetulkan pepijat sedia ada atau memperkenalkan kelemahan baharu melalui kemas kini.
Walau bagaimanapun, terdapat dua kaedah utama yang boleh digunakan oleh semua pembangun perisian untuk memastikan mereka mencipta perisian yang selamat. Ia mengenai menulis kod selamat dari awal dan menguji kod dengan berkesan.

Keselamatan perisian memainkan peranan yang sangat penting
Bagaimana untuk menulis kod selamat
Menulis kod selamat hanya mempunyai satu perkara yang perlu dilakukan - pengendalian ralat. Jika anda boleh menjangkakan setiap nilai berpotensi yang boleh diberikan oleh pengguna kepada aplikasi dan menjana respons dalam program untuk nilai itu, maka anda sedang menulis kod selamat.
Ini adalah lebih mudah daripada yang anda fikirkan, kerana semua pembangun yang baik mengetahui hampir segala-galanya tentang aplikasi yang mereka bangunkan. Oleh itu, anda harus mengetahui setiap nilai yang diperlukan oleh aplikasi anda untuk melaksanakan tugas (nilai yang diluluskan) dan memahami bahawa sebarang nilai lain yang mungkin wujud adalah nilai yang tidak diluluskan .
Tulis kod selamat
Katakan anda ingin mencipta program yang menerima hanya dua nilai integer daripada pengguna dan melakukan operasi penambahan pada mereka. Sebagai pembangun yang baik, anda kini mengetahui segala-galanya tentang aplikasi anda. Anda tahu semua nilai yang akan diterima oleh program ini (nilai integer) dan anda tahu tugas yang akan dilakukan oleh program ini (operasi penambahan).
Contoh mencipta program dalam Java
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
addition(value1, value2);
input.close();
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}
Kod di atas mencipta aplikasi yang sepadan dengan keperluan dengan tepat. Apabila dilaksanakan, ia akan menghasilkan baris berikut dalam konsol:
Please enter your two integer values:
Aplikasi kemudian akan kekal dijeda sehingga pengguna memasukkan dua nilai integer ke dalam konsol (bermaksud masukkan nilai pertama, tekan kekunci Enter , dan ulangi).
Jika pengguna memasukkan nilai 5 dan 4 dalam konsol, program menghasilkan output berikut:
The sum of the two integer values you entered: 9
itu hebat. Program ini melakukan apa yang sepatutnya dilakukan. Walau bagaimanapun, jika pengguna jahat masuk dan memasukkan nilai bukan integer, seperti "g", ke dalam aplikasi anda, akan ada masalah. Ini kerana tiada kod dalam aplikasi yang melindungi daripada nilai yang tidak diluluskan.
Pada ketika ini, aplikasi anda akan ranap, mewujudkan pintu masuk yang berpotensi ke dalam aplikasi anda supaya penggodam tahu dengan tepat apa yang perlu dilakukan seterusnya.
Contoh keselamatan program
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
try {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
//using the scanner class to read each input from the user,
//and assign it to is respective variable (throws an exception if the values are not integers)
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
//calls the addition function and passes the two values to it
addition(value1, value2);
//closes the input stream after it has come to the end of its use
input.close();
//handle all the errors thrown in the try block
}catch(InputMismatchException e){
System.out.println("Please enter a valid integer value.");
}catch(Exception e) {
System.out.println(e.getMessage());
}
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}
Kod di atas adalah selamat kerana ia menjalankan pengendalian pengecualian. Oleh itu, jika anda memasukkan nilai bukan integer, program akan menjana baris kod berikut:
Please enter a valid integer value.
Apakah pengendalian Pengecualian?
![Mengapakah keselamatan perisian merupakan kemahiran yang perlu dimiliki oleh semua pengaturcara? Mengapakah keselamatan perisian merupakan kemahiran yang perlu dimiliki oleh semua pengaturcara?]()
Pengendalian pengecualian
Pada asasnya, pengendalian pengecualian ialah versi moden pengendalian ralat, di mana anda memisahkan kod pengendalian ralat daripada kod pengendalian biasa. Dalam contoh di atas, semua kod pengendalian biasa (atau kod yang berpotensi menyebabkan pengecualian) berada dalam blok percubaan dan semua kod pengendalian ralat berada dalam blok tangkapan.
Jika anda melihat lebih dekat pada contoh di atas, anda akan melihat bahawa terdapat dua blok tangkapan. Yang pertama mengambil hujah InputMismatchException - ini ialah nama pengecualian yang dilemparkan jika nilai bukan integer dimasukkan. Yang kedua mengambil argumen Exception , dan ini penting kerana tujuannya adalah untuk mencari sebarang pengecualian dalam kod yang tidak ditemui oleh pembangun semasa ujian.
Semak kod
Anda tidak boleh memandang rendah kuasa ujian dan ujian semula kod. Ramai pembangun (dan pengguna apl) menemui pepijat baharu selepas perisian itu tersedia kepada orang ramai.
Ujian menyeluruh terhadap kod anda memastikan anda mengetahui perkara yang akan dilakukan oleh aplikasi anda dalam setiap situasi yang boleh difikirkan, dan ini membolehkan anda melindunginya daripada pelanggaran data.
Pertimbangkan contoh di atas. Bagaimana jika, setelah selesai, anda hanya menguji aplikasi dengan nilai integer? Anda boleh membiarkan aplikasi menganggap anda telah berjaya mengenal pasti semua kemungkinan ralat sedangkan sebenarnya anda tidak melakukannya.
Realitinya ialah anda mungkin tidak dapat mengenal pasti semua kemungkinan ralat. Inilah sebabnya pengendalian ralat berfungsi seiring dengan menguji kod anda. Menguji atur cara di atas mendedahkan kemungkinan ralat yang akan berlaku dalam situasi tertentu.
Walau bagaimanapun, jika beberapa ralat lain yang tidak muncul semasa ujian wujud, maka blok tangkapan kedua dalam kod di atas akan mengendalikannya.
Keselamatan pangkalan data
Jika aplikasi anda bersambung ke pangkalan data, cara terbaik untuk menghalang akses kepada pangkalan data itu ialah memastikan semua aspek aplikasi selamat. Walau bagaimanapun, bagaimana jika aplikasi anda direka dengan tujuan semata-mata untuk menyediakan antara muka kepada pangkalan data tersebut?
Di sinilah perkara menjadi lebih menarik. Dalam bentuk paling asasnya, pangkalan data membenarkan pengguna menambah, mendapatkan semula, mengemas kini dan memadam data. Sistem pengurusan pangkalan data ialah aplikasi yang membolehkan pengguna berinteraksi secara langsung dengan pangkalan data.
Kebanyakan pangkalan data mengandungi data sensitif, oleh itu, untuk mengekalkan integriti dan mengehadkan akses kepada data ini, terdapat keperluan - kawalan akses.
Kawalan capaian
Kawalan capaian bertujuan untuk mengekalkan integriti pangkalan data dengan menentukan jenis orang yang boleh mengakses pangkalan data dan menyekat jenis capaian yang mereka miliki. Oleh itu, sistem pengurusan pangkalan data yang baik mesti dapat merekodkan siapa yang mengakses pangkalan data, bila, dan apa yang mereka lakukan.
Ia juga boleh menghalang pengguna berdaftar daripada mengakses atau mengedit data yang mereka tidak dibenarkan untuk berinteraksi.