외부 입력을 통한 시스템 설정 조작 (External Configuration Control)
External Control of System or Configuration Setting
Last updated
External Control of System or Configuration Setting
Last updated
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
public class UnsafeDatabaseConfig {
public void setDatabase(HttpServletRequest request, Connection connection) throws SQLException {
String catalog = request.getParameter("db"); // 사용자 입력값을 직접 사용
connection.setCatalog(catalog);
}
}import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
public class SafeDatabaseConfig {
private static final Set<String> ALLOWED_CATALOGS = Set.of("main_db", "backup_db");
public void setDatabase(HttpServletRequest request, Connection connection) throws SQLException {
String catalog = request.getParameter("db");
if (!ALLOWED_CATALOGS.contains(catalog)) {
throw new SecurityException("Invalid database selection");
}
connection.setCatalog(catalog);
}
}