호기심 많은 개발자 🚀

웹 보안 (로그인 , 로그아웃) & SQL injection (2022-01-11) 본문

DB/SQL

웹 보안 (로그인 , 로그아웃) & SQL injection (2022-01-11)

🤗 현우 🤗 2022. 1. 11. 09:14
  • 로그인 , 로그아웃
  • 현재 접속자가 해당 사이트의 구성원인지 확인하고 특정 행위에 대한 허가를 하는 직업
  • 세션 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