하드코딩된 계정 사용
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