의미없는 블로그
Spring Data JPA 에서 SQL Injection 본문
JPA 란 DB 관련된 자바 API 라고 생각하면 편할거 같다
Spring Data JPA 는 Spring 환경에서 JPA 를 사용해서 DB 구현하는거라 보면 될거같공..
무튼 JPA 사용해서 DB 구현하는 방식 찾아보면 공통적으로 하는 말이 'SQL 쿼리문을 직접 작성하지 않는다' 고 한다
뭔소린가 했더니 코드를 구현할 때
String sql = insert into user(%s, %s, %d) value(id, passwd, age); 이런식으로 쓰는게 아니고
setId(), setPasswd(), setAge() 이런식으로 객체를 만들어서 쓴다
그래서 장점 중에 쿼리를 수정 안해도 되니까 Oracle, Mssql, Mysql 등 여러 DB 를 사용할 때 문법 걱정이 없다고 한다
테스트 해볼 수 있는 코드가 있는데 일단 환경 세팅(이클립스, MySQL Workbench)이 먼저 필요쓰..
- 테스트 코드 출처 : https://loy124.tistory.com/195?category=767138
- 환경 세팅 : https://saltlee.tistory.com/242
소스코드 잘 몰라서 그냥 대략 어떤 느낌인지만..
properties 파일에는 DB 연동 해주고
getId(), setID() 등으로 DB에 데이터 get(select), set(create) 할 수 있도록 작성
setAccount(), setEmail() 등으로 DB에 데이터 set 한다
프로젝트 실행시키고(Run as Junit Test) DB 조회해보면 데이터 들어가 있다
무튼 이런식으로 굴러간다고 보면 되겠고..
Spring Data JPA 에서 SQL Injection 이 발생할 수 있느냐? 하는 것에 대해서는
네이티브 쿼리 방식이라고 해서 말 그대로 쿼리를 그대로 갖다 쓰는 경우에는 취약하다고 할 수 있겠다 ↓ 요렇게
근데 네이티브 쿼리 방식도 '파라미터 바인딩' 이라고 파라미터 값을 매핑해서 사용하는 방식으로 쓰면
PreparedStatement 쓰는것처럼 동작해서 안전하다고 한다
참고 : https://stackoverflow.com/questions/41661193/is-spring-data-jpa-safe-against-sql-injection
참고 : https://blog.voidmainvoid.net/173
참고 : https://ssdragon.tistory.com/m/98 (이거 좋음)
'# 나 > pentest (WEB)' 카테고리의 다른 글
취약점 진단 왜 하냐? (1) | 2022.10.06 |
---|---|
이클립스 Spring Project & MySQL Workbench 세팅 (0) | 2022.10.06 |
Nginx 에서 400, 505 에러 페이지 설정이용 (0) | 2022.07.20 |
문서보안 우회 (1) | 2022.06.23 |
랜섬웨어 만들기 (AES 암복호화) (0) | 2022.06.22 |