하드코딩된 계정 사용

Use of Hard-coded Credentials

설명

소스코드에 하드코딩된 계정 정보(예: 비밀번호 또는 암호화 키)을 포함하여 사용하는 경우 발생합니다.

잠재적 영향

  • 무단 접근 (무단 데이터 접근): 공격자가 민감한 데이터에 접근하거나 악용할 수 있습니다.

  • 권한 상승 (준접근 권한 허용): 악의적인 사용자가 관리자로 가장하거나 악용시 위험한 중요한 권한에 접근할 수 있습니다.

해결 방법

  • 민감한 데이터를 하드코딩하는 것은 피하세요. 대신, 환경 변수 또는 안전한 외부 저장소를 사용하여 자격 증명을 관리하도록 하세요.

  • Spring Framework의 Spring Security와 같은 보안 라이브러리를 사용하여 비밀번호를 안전하게 관리하세요.

  • 비밀번호의 저장이나 처리 시 강력한 암호화 알고리즘을 사용하세요.

취약한 코드 및 안전한 코드 예시

취약한 코드

@RestController
public class LoginController {

    private static final String USERNAME = "admin";
    private static final String PASSWORD = "admin123"; // 하드코딩된 비밀번호

    @PostMapping("/login")
    public String login(@RequestParam String username, @RequestParam String password) {
        if (USERNAME.equals(username) && PASSWORD.equals(password)) {
            return "로그인 성공";
        }
        return "로그인 실패";
    }
}

안전한 코드

설명:

  • 취약한 코드: 코드에서 비밀번호가 하드코딩되어 있어, 코드에 접근할 수 있는 누구나 비밀번호를 쉽게 알 수 있습니다. 이는 보안상 매우 위험합니다.

  • 안전한 코드: 비밀번호를 외부 파일(application.properties 또는 환경 변수 등)에서 읽어 와서 코드에 보이지 않도록 관리합니다. 이를 통해 보안이 강화됩니다.

관련 CVE

참조

Last updated