[시큐어코딩-15] 보안기능(1) 적절한 인증없는 중요기능 허용
발생원인
인증과정없이 주요 정보를 열람 또는 변경시 발생한다.
영향
권한 도용, 주요 정보 변조 가능
코드예
안전하기 않은 코드의 예 - JAVA |
public void sendBankAccount(String accountNumber,double balance) { BankAccount a ccount = new BankAccount(); account.setAccountNumber(accountNumber); account.setToPerson(toPerson); account.setBalance(balance); AccountManager.send(account); ... } |
이 예제 코드는 문맥상의 의미로 은행계좌에 대한 처리를 하면서 재인증을 거치지 않고 계좌이체를 하고 있다. |
안전한 코드의 예 - JAVA |
// 재인증을 위한 팝업 화면을 통해 사용자의 credential을 받는다. String newUserName = request.getParameter("username"); String newPassword = request.getParameter("password"); if ( newUserName == null || newPassword == null ) { throw new MyEception("데이터 오류:); } // 세션으로부터 로긴한 사용자의 credential을 읽는다. String password = session.getValue("password"); String userName = session.getValue("username"); // 재인증을 통해서 이체여부를 판단한다. if (isAuthenticatedUser() && newUserName.equal(userName) && newPassword.equal(password) ) { // 이체와 같은 중요한 작업을 수행한다. |
인증이 수행된 사용자만이 재인증을 거쳐 계좌이체가 가능하도록 작성한다. |