MEMBUAT PROGRAM LOGIN YANG CRASH APABILA MEMASUKKAN NAMA USER LEBIH DARI 10 KARAKTER DAN ATAU PASSWORD LEBIH DARI 20 KARAKTER
SOURCE CODE :

void CLoginErrDlg::OnMasuk() // Apabila user menekan tombol masuk
{
UpdateData(TRUE);

CString msg;
if(m_User.GetLength() > 0 && m_Pass.GetLength() > 0)
{
char userValidate[10];
char passValidate[20];
strcpy(userValidate,m_User);
strcpy(passValidate,m_Pass);
if(strcmp(userValidate,"hendra") == 0 && strcmp(passValidate,"hendra") == 0)
{
msg = _T("Login Sukses!\n\n");
msg += _T("Login Anda :\n");
msg += _T("Nama User : ");
msg += _T(userValidate);
msg += _T("\n");
msg += _T("Password : ");
msg += _T(passValidate);
}else{
msg = _T("Login Gagal!!! Silahkan coba lagi...");
m_User = "";
m_Pass = "";
}
}else{
msg = _T("LOGIN ERROR : \n");
if(m_User.GetLength() == 0) msg += _T("Nama user tidak boleh kosong!\n");
if(m_Pass.GetLength() == 0) msg += _T("Password tidak boleh kosong!\n");
}
MessageBox(msg, "Konfirmasi :");
UpdateData(FALSE);
}

void CLoginErrDlg::OnBatal()// Apabila user menekan tombol batal
{
UpdateData(TRUE);
m_User="";
m_Pass="";
UpdateData(FALSE);
}

KOMENTAR :

Salah satu penyebab resiko keamanan dari pembuatan suatu aplikasi adalah akibat dari program kelalaian programmernya sendiri. Untuk kasus ini, tidak ada pembatasan karakter untuk variable char userValidate[10] dan char passValidate[20] . Artinya kita memesan memori untuk variable userValidate sejumlah 10 karakter dan variable passValidate sejumlah 20 karakter, apabila user memasukkan nama user untuk userValidate lebih dari 10 karakter maka aplikasi akan crash. Begitu pula halnya dengan passValidate, jika user mengisi password lebih dari 20 karakter maka karakter tersebut akan menembus ke dalam memori penyimpanan userValidate dan jika lebih dari 30 karakter maka aplikasi akan crash pula.
Solusi untuk mencegah terjadinya crash pada aplikasi ini adalah dengan memasang suatu procedure atau function yang akan mem-filter masukan user apabila user memasukan karakter lebih dari yang kita tentukan. Atau variable userValidate dan passValidate panjang karakternya tidak dibatasi, maka tidak perlu memasang procedure atau function filter.

loginErr1.JPG
loginErr2.JPG
Aplikasi Crash!…