Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20210412] MyBatis $ vs # (2) #95

Open
JuHyun419 opened this issue Apr 12, 2021 · 0 comments
Open

[20210412] MyBatis $ vs # (2) #95

JuHyun419 opened this issue Apr 12, 2021 · 0 comments
Labels

Comments

@JuHyun419
Copy link
Owner

JuHyun419 commented Apr 12, 2021

MyBatis $ vs # (2)

  • VO에 name => getter가 getName() 일 때 ..
  • #{name} , ${name} VO에있는 name값이 MyBatis에서 XML에 매핑될 때 getName()으로 값을 가져옴
#{ }
- Parameter가 String 형태로 들어와 자동적으로 'Parameter' 형태가 됨
- ex) VO에 담긴 id 값이 getter로 반환될 때, id 값이 12라면 MyBatis 쿼리에는 id='12'의 형태가 됨
- SQL Injection을 예방할 수 있어 $ { } 보다 보안 측면에서 뛰어남


${ }
- Parameter가 바로 출력된다.
- ex) VO에 담긴 id값이 getter로 반환될 때, id 값이 12라면 MyBatis 쿼리에는 id=12 형태가 됨
- SQL Injection을 예방할 수 없어 보안측면에서 좋지 않음 !!


SQL Injection
- SQL인젝션은 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 
데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격방법이다.
${}문법을 사용하면 주로 발생할 수 있는 가장 큰 허점이었으며 이를 막기위해 대부분 #{} 문법을 사용함으로써 대처한다.

https://sas-study.tistory.com/96

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant