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
반응형