Langkah-langkah keamanan untuk menulis program jaringan di Delphi
Kontrol MIDAS Delphi menyediakan sarana yang sangat nyaman untuk menulis program jaringan. Dengan menggunakan kontrol ini, Anda dapat menulis program sistem klien/server di jaringan area lokal, dan Anda juga dapat dengan mudah membuat aplikasi pemrosesan terdistribusi di Internet.
Masalah penting dengan program jaringan adalah pertimbangan keamanan. Beberapa data sensitif dikirimkan secara online dan mungkin disadap secara ilegal, sehingga menyebabkan kerugian yang tidak perlu. Dalam proses pemrograman sebenarnya, saya mengambil beberapa tindakan pencegahan yang efektif, yang akan saya perkenalkan secara singkat di sini.
1. Prinsip
Saat ini, terdapat banyak metode enkripsi data yang berperan dalam perlindungan data. Namun, jika kunci tetap digunakan atau kunci dikirimkan bersama dengan data, hasil kerahasiaan yang memuaskan tidak dapat dicapai. Dalam praktiknya, saya menemukan serangkaian metode kunci acak dalam mode "permintaan-respons", yang sangat memuaskan untuk menjaga kerahasiaan kata sandi dan data.
Ketika program klien dimulai dan mencoba membuat koneksi dengan program server, program klien memperoleh string acak yang dihasilkan oleh program server dari server. Sistem akan menggunakan string ini sebagai kunci untuk mengirimkan kata sandi dan data login pengguna. Karena kunci dibuat secara acak oleh program server, kuncinya berbeda setiap kali pelanggan masuk, sehingga sangat mengurangi kemungkinan intersepsi kata sandi yang menyebabkan pencurian data.
Server dapat memperkenalkan antarmuka khusus dalam modul data jarak jauh, yang mengembalikan string acak. Modul data jarak jauh harus mencatat string ini sebagai kunci untuk pemrosesan selanjutnya. Ada banyak cara untuk menghasilkan string acak. Metode paling sederhana adalah dengan menggunakan fungsi Random() untuk menghasilkan nomor acak dan kemudian menggunakan fungsi Format() atau IntToStr() untuk menghasilkan string dari nomor ini.
2. Tindakan login pengguna
Untuk mencegah program di-debug secara ilegal dan dengan demikian membocorkan kata sandi, informasi login pelanggan harus diproses di sisi server, atau lapisan keamanan dapat ditambahkan secara khusus untuk bertanggung jawab atas login pelanggan. Informasi login pelanggan disimpan dalam tabel informasi pelanggan, termasuk nama pengguna, kata sandi, izin dan informasi lainnya.
Ketika program klien masuk, program klien terlebih dahulu memanggil antarmuka program server untuk mendapatkan string kunci, dan menggunakan kunci ini untuk mengenkripsi nama pengguna dan kata sandi yang dimasukkan oleh pengguna dan mengirimkan informasi login ke server. Algoritma enkripsi dapat berupa algoritma DES atau algoritma efektif lainnya. Setelah server menerima informasi login, pertama-tama server mendekripsi informasi login dengan kunci acak yang dibuat dan dicatat sebelumnya, dan kemudian membandingkan informasi yang didekripsi dengan informasi di tabel informasi pelanggan yang disimpan untuk menentukan apakah informasi pelanggan tersebut sah dan Data pelanggan izin dinikmati, dll.
Program klien untuk proses ini adalah sebagai berikut:
strKey:=myRemoteSever.GetKey();
{Memanggil antarmuka server untuk mendapatkan kunci acak}
Nama Pengguna:=Ency(strUserName
strKey);
{Enkripsi nama pengguna, Ency() adalah algoritma enkripsi}
Kata Sandi:=Ency(strPassword
strKey);
{Enkripsi kata sandi masuk}
Jika myRemoteServer.LogIn(UserName
Kata Sandi) lalu {Masuk}
Mulai
{proses}
Akhir;
Proses login sisi server LogIn() adalah sebagai berikut:
strUserName:=DeEncy(UserName
strKey);
{Dekripsi nama pengguna, DeEncy() adalah algoritma dekripsi}
strPassword:=DeEncy(Kata Sandi
strKey);
{Dekripsi kata sandi masuk}
{Database kueri}
jika (Lulus) maka
Hasil:=benar
Kalau tidak
Hasil:=salah;
Perlu dicatat bahwa StrKey harus didefinisikan sebagai variabel global baik dalam program server maupun program klien.
Untuk mencegah tabel informasi pelanggan dibuka di luar program dan dengan demikian membocorkan kata sandi, tindakan enkripsi tertentu dapat diterapkan pada informasi pelanggan, misalnya, Kata Sandi dapat ditambahkan ke tabel PARADOX, dan program server terlebih dahulu menyediakannya Kata Sandi saat mengakses tabel informasi pelanggan.
3. Transmisi data
Dalam aplikasi jaringan, beberapa data sensitif harus dienkripsi ketika dikirimkan melalui Internet. Mekanisme MIDAS Delphi menyediakan cara untuk mengenkripsi data. Ia dapat mengenkripsi beberapa bidang sebelum data dikirimkan ke klien. Ia juga dapat mendekripsi bidang data yang sesuai dari klien setelah menerima permintaan pembaruan data klien sebelum mengirimkannya ke database. . Untuk mencapai tujuan ini, Anda dapat menambahkan objek TPRovider atau TdataSetProvider ke modul data jarak jauh dari program server, dan mengatur properti DataSet dari objek ini ke kumpulan data yang akan diproses. Tambahkan kode berikut ke acara OnGetData di Tprovider:
dengan DataSet lakukan
mulai
sementara bukan EOF lakukan
mulai
Sunting;
Data Sensitif.AsString :=
Ency(SensitiveData.AsString
strKey);
{Enkripsi data sensitif}
Pos;
Berikutnya;
akhir;
akhir;
Kode di atas dapat mengenkripsi data sensitif sebelum mengirimkannya ke program klien.
Demikian pula, menambahkan beberapa kode pemrosesan ke acara OnUpdateData di Tprovider dapat mendekripsi data yang dikirim oleh klien.
Hal di atas hanya memperkenalkan prinsip-prinsip umum penerapan langkah-langkah keamanan program jaringan. Atas dasar ini, langkah-langkah kerahasiaan lainnya dapat ditambahkan untuk mencapai efek kerahasiaan yang lebih baik. Misalnya, program klien dapat menggunakan perangkat keras tambahan tertentu untuk meningkatkan keamanan. Dalam aplikasi kartu pintar, program klien tidak hanya mengharuskan pengguna memasukkan nama pengguna dan kata sandi saat login, program ini juga memeriksa jenis dan konten spesifik kartu IC di pembaca IC kata sandi bocor, tidak ada yang akan login meniru identitas. Tentu saja, tidak ada tindakan keamanan yang benar-benar aman. Tindakan keamanan harus memiliki sistem kerahasiaan yang ketat dan kesadaran kerahasiaan tingkat tinggi dari pihak pengguna untuk benar-benar menjaga kerahasiaan.