본문 바로가기
Web Security/SecureCoding

적절한 인증 없는 중요기능 허용

by KkingKkang 2022. 11. 21.

- 안전하다고 확인된 라이브러리나 프레임워크를 사용한다. 즉, OpenSSL 이나 ESAPI의 보안기능을 사용한다.

 

안전하지 않은 코드 ▼

public void sendBankAccount(String accountNumber, double balance) {
	BankAccount account = new BankAccount();
    account.setAccountNumber(accountNumber);
    account.setToPerson(toPerson);
    account.setBalance(balance);
    AccountManager.send(account);
}

 

안전한 코드 ▼

public void sendBankAccount(HttpServletRequest request, HttpSession session, String accountNumber, double balance){

	//재인증을 위한 팝업 화면을 통해 사용자의 credential(자격증명)을 받는다
    String newUserName = request.getParameter("username");
    String newPassword = request.getParameter("password");
    if( newUserName == null || newPassword == null ) {
    	throw new MyException("데이터 오류");
    }
    
    // 세션으로부터 로긴한 사용자의 credential을 읽는다
    String password = session.getValue("password");
    String userName = session.getValue("username");
    
    //재인증을 통해서 이체여부를 판단한다.
    if( isAuthenticatedUser() && newUserName.equal(userName) && newPassword.equal(password) ) {
    	BankAccount account = new BankAccount();
        account.setAccountNumber(accountNumber);
        account.setToPerson(toPerson);
        account.setToPerson(balance);
        AccountManager.send(account);
        }
        }

 

 

 

반응형

댓글