SELECT PROFILES_ACTIVE
, USER_ID
, SESSION_ID
, INSTANCE_ID
, IN_DATE
FROM SFI_LOGIN_SESSION
WHERE PROFILES_ACTIVE = '${profilesActive}'
${}
- 파라미터가 바로 출력됨 (Statement)
- 해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경됨
- 쿼리 주입(SQL Injection)을 예방할 수 없어 보안에서 불리. (사용자 입력을 전달할때는 사용x)
- 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용 ( #{} 은 ' ' 가 자동으로 붙음 )
SELECT PROFILES_ACTIVE
, USER_ID
, SESSION_ID
, INSTANCE_ID
, IN_DATE
FROM SFI_LOGIN_SESSION
WHERE PROFILES_ACTIVE = #{profilesActive}
#{}
- 파라미터가 string 형태로 들어옴
- 쿼리 주입을 예방할 수 있어 보안 측면에서 유리 (PreparedStatement)
SELECT * FROM MEMBER WHERE ID = ''or 1=1--' and PW = '아무거나입력'
SQL Injection
- WHERE 절을 강제로 참으로 만들어 SQL을 조작
- `'or 1=1` 입력을 통해 참이 됨
'DATABASE(SQL)' 카테고리의 다른 글
MYSQL DEFINER (0) | 2023.04.27 |
---|---|
SQL 네이밍 규칙 (0) | 2023.04.12 |
DML DDL DCL (0) | 2022.12.20 |
Oracle Tablespace (0) | 2022.12.20 |
Oracle Synonym (0) | 2022.12.20 |