MEMBUAT PROGRAM LOGIN YANG CRASH APABILA MEMASUKKAN NAMA USER LEBIH DARI 10 KARAKTER DAN ATAU PASSWORD LEBIH DARI 20 KARAKTER
OURCE 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.
Aplikasi Crash!…
October 29th, 2008 at 3:21 am
Well said.