-
[Springboot] SQL Injection 이란? 해결 방안은?Server/Spring Boot 2025. 4. 21. 17:28728x90반응형
🔐 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반응형'Server > Spring Boot' 카테고리의 다른 글
[Springboot] 인증(Authentication)과 인가(Authorization) 구분하기! (0) 2025.04.21 [Springboot] 통합 테스트 코드 작성해보기 (Controller) (1) 2025.04.21 [Springboot] 단위 테스트 코드 작성해보기 (Service, Dao, Repository) (0) 2025.04.21 [Springboot] 테스트도구 JUnit5 에 대해 알아보자! (0) 2025.04.21 [Springboot] 스레드와 프로세스를 구분해보자! (0) 2025.04.18