雖然寫我的應用程序的一部分,需要用戶輸入他們的當前密碼,我想知道,如果它是危險的像做以下(在功能OnChangePassword()
:用戶應用程序中的遞歸重試是否危險?
if(strCurrPassword != inputPassword.GetInput())
{
if(MessageBox(_T("Incorrect password entered, you must enter your current password"), _T("Incorrect Password"), MB_RETRYCANCEL | MB_ICONWARNING) == IDRETRY)
OnChangePassword();
return;
}
這將是罰款通常情況下,當用戶將一般只是之前他需要一些嘗試/她想起了自己的密碼,但我擔心這可能會被惡意用戶濫用和用來使一個調用堆棧溢出。
如果它可能會導致堆棧溢出,我可以採取哪些措施來防止它被濫用?
好吧,你可以添加一個參數來計算try(例如'OnChangePassword(unsigned int numTries)'並在一定次數的嘗試後中止遞歸,或者不使用遞歸,而是一個循環。 – Hulk