우주코딩
sql , sql 삽입공격, 값이 놓일 자리 ? 본문
sql 삽입 공격
데이터가 들어갈 자리에 sql 코드를 집어넣어서 원래 sql문장을 왜곡시키는 것을 sql 삽입 공격이라고 한다.
값이 놓일 자리 ?
in-parameter라고 부른다. sql 삽입 공격이 불가능하다.
PreparedStatement는 미리 SQL 문장을 준비하여 값을 삽입하는 기법이다.
SQL 문장을 준비할 때, 값이 들어 갈 자리에 ? 로 표시한다.
? 를 "in-parameter"라 부른다.
SQL을 서버에 전달하기 전에 in-parameter 자리에 값을 넣는다. => PreparedStatement.setXxx(in-parameter 인덱스, 값);
- setXxx : 컬럼의 타입에 따라 setInt(), setString(), setDate() 등을 사용할 수 있다.
- in-parameter 인덱스
- ? 문자가 등장하는 순서대로 1부터 번호를 부여한다.
값
- SQL 문장에 삽입될 값이다.
- 실제 SQL 문장과 별도로 서버에 전달되기 때문에 문자열 값 중간에 '(작은 따옴표)가 포함되더라도 SQL 문에 영향을 끼치지 않는다. 작은 따옴표를 그냥 일반 문자로 취급한다. 즉, 'SQL 삽입 공격'이 100% 불가능하다.
=> in-parameter 값을 설정할 때 순서대로 할 필요는 없다.
'Project' 카테고리의 다른 글
Mybatis persistence Framework, Data Persistence Framework (0) | 2021.10.20 |
---|---|
DB 모델링, DB 모델링 절차 (0) | 2021.10.20 |
DBMS 개요, JDBC API 규격, JDBC 프로그래밍 기본 골격 (0) | 2021.10.20 |
SQL - 조인 (0) | 2021.10.11 |
SQL - Select , like, and , or, Foreign Key (0) | 2021.10.11 |
Comments