Server/Spring Boot

[Springboot] SQL Injection 이란? 해결 방안은?

hoonylab 2025. 4. 21. 17:28
728x90
반응형

🔐 SQL Injection이란?

SQL Injection은 사용자의 입력값이 검증 없이 SQL 쿼리에 포함될 때 발생합니다...

💥 SQL Injection 발생 예제 (Spring Boot)


// 취약한 코드 예시
@RestController
@RequiredArgsConstructor
public class UserController {
    private final JdbcTemplate jdbcTemplate;

    @GetMapping("/user")
    public String getUser(@RequestParam String username) {
        String sql = "SELECT * FROM users WHERE username = '" + username + "'";
        return jdbcTemplate.queryForList(sql).toString();
    }
}

✅ SQL Injection 해결 방법

💡 PreparedStatement 사용 예제


@RestController
@RequiredArgsConstructor
public class SafeUserController {
    private final JdbcTemplate jdbcTemplate;

    @GetMapping("/safe-user")
    public String getSafeUser(@RequestParam String username) {
        String sql = "SELECT * FROM users WHERE username = ?";
        return jdbcTemplate.queryForList(sql, username).toString();
    }
}

🧪 JPA를 활용한 안전한 방식


@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByUsername(String username);
}
--- 필요하다면 코드 블록을 이미지로 변환하거나, 예제용 데이터베이스 구성 예시도 추가해드릴 수 있어요. 더 추가하고 싶은 부분 있을까요?
728x90
반응형