호기심 많은 개발자 🚀
웹 보안 (로그인 , 로그아웃) & SQL injection (2022-01-11) 본문
- 로그인 , 로그아웃
- 현재 접속자가 해당 사이트의 구성원인지 확인하고 특정 행위에 대한 허가를 하는 직업
- 세션 or 쿠키 (전역 변수여야 하기때문임) > 인증(로그인) > 인증 티켓 발급 > 특정 행위 허가 유무 판단.
인증 , Authetication
- 현재 접속자가 해당 사이트의 구성원인지 확인
허가 , Authorization
- 특정 행위에 대한 허가를 하는 직업
SQL injection
로그인이 sql을 이용할 경우 대부분 아래 방식의 쿼리를 이용한다.
String sql = String.format("select * from tblUser where id = '%s' and pw='%s'",id,pw);
하지만 id pw 에 아래 정보를 입력시 바로 로그인이 성공 하게된다. 때문에 로그인시 특정문자에 예외처리를 해줘야된다.
EX ] ' or '0'='0
Prepared Statement에서 바인딩 변수를 사용하였을 때 쿼리의 문법 처리과정이 미리 선 수행되기 때문에 바인딩 데이터는 SQL문법적인 의미를 가질 수 없다. 때문에 이를 방지하기 위해선 prepareStatement 를 사용하면 된다.
EX ]String sql = "select * from tblUser where id=? and pw=?";
pstat = conn.prepareStatement(sql);
pstat.setString(1, dto.getId()); //첫번째 ?
pstat.setString(2, dto.getPw()); //두번째 ?
rs = pstat.executeQuery();/code>
'DB > SQL' 카테고리의 다른 글
SQL Loader (0) | 2022.04.21 |
---|
Comments