SQL Injection 해킹 방지를 위한 코딩 > 온라인강의

본문 바로가기
 
 
 
오늘 717
어제 2,152
최대 2,454
전체 3,195,630
비즈니스의 시작 비즈명함 ~ 가격, 품질, 배송 3가지 만족을 드리는 비즈명함 / 즉석명함 / 급행서비스 / 서울 전지역 수도권일부 3시간배송

온라인강좌 홈 > 온라인강좌 > 온라인강좌

JSP | SQL Injection 해킹 방지를 위한 코딩

페이지 정보

작성일2012-10-09 20:08 조회5,511회 댓글0건

본문

SQL Injection 은 사용자가 요상한 문자열을 입력해서 쿼리를 요상하게 바꿔 버려서 아무 아이디로나 로그인이 훅 되버린다던지 하는 쪼금은 싱거운 해킹방법중의 하나라고 나는 알고 있다.
 
뭐 예를들어 아이디 비번을 입력하고 로그인 할때
아이디로  admin' OR '1'='1 요런걸 입력하고 로그인을 했을때 admin 으로 싹 로그인 되 버리는 어처구니 없는 일이 발생하는 것이 SQL Injection 처리를 쪽바로 해주지 않았을때 일어나는 참혹한 일이다.
 
SQL Injection 이 발생하는 전형적인 코드는 다음과 같다.
 
 
String userid=request.getParameter("userid");
String password=request.getParameter("password");
....
....
Statement stmt = conn.createStatement();
ResultSet rs = 
   stmt.executeQuery("select count(*) as cnt from member where userid='"+userid+"' and password='"+password+"'");
....
....
 
 
위 코드처럼 사용자 정보를 받아서 쿼리를 실행하고 실행결과가 1 이면 로그인 시켜주는 코드가 있다.
그런데 사용자가 아디디로 admin' OR '1'='1  을 입력하고 비밀번호로 abcd 를 입력한 후 로그인 시켜주셈~ 이라고 하면 우째될까?
위 코드대로라면  select count(*) from member where userid='amdin' OR '1'='1' and password = 'abcd'   이 쿼리가 실행되 버린다 -_-;;;
무섭다. 만약 사용자 테이블에 userid 가 admin 이라는 레코드가 있다면 admin 으로 로그인 되버리는 것이다. 
이런 어처구니 없는일이 놀랍게도 몇몇 허접한 사이트에서는 더러 통하는데도 있다 . -_-
 
아무튼 헛소리는 고만하고 본론으로 들어가서 SQL Injection 을 방지하려면 우째해야 될까? 
Statement 대신  PreparedStatement 를 쓰면 된다. 요렇게.
 
 
....
....
PreparedStatement stmt = conn.prepareStatement("select count(*) from member where userid=? and password=?");
stmt.setString(1, userid);
stmt.setString(2, password);
 
ResultSet rs = stmt.executeQuery();
....
....
 
 
PreparedStatement 만 쓰면 해결된다고 해서 또 요렇게는 쓰지 말길 -.-;
 
※ 하이버네이트는 한번도 안써봐서 잘 모르겠는데 mybatis 나 ibatis 같은 경우는 무난하게 #{xxxx} 요런것만 썼다면 SQL Injection 이 방지된다. 
그런데 WHERE 절에 ${xxxx} 이렇게 있다면 다시 한번 생각해 보기 바란다. 
${xxxx} 이거는 문자열 더하는것과 똑같기 때문에 위험하다. ${xxxx} 요런건 ORDER BY 절 같은데만 사용하자.
 
 
자료출처
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


목록

Total 24건 1 페이지
온라인강의 목록
번호 제목
24
JSP 게시판 만들기 - 삭제 (write.2017-02-17)  Hit.56
23
JSP 게시판 만들기 - 수정 (write.2017-02-17)  Hit.54
22
JSP 게시판 만들기 - 내용 (write.2017-02-17)  Hit.55
21
JSP 게시판 만들기 - 글쓰기 (write.2017-02-17)  Hit.54
20
JSP 게시판 만들기 - 목록 (write.2017-02-17)  Hit.55
19
JSP JSP 지원되는 Captcha (write.2017-02-15)  Hit.78
18
JSP [eclipse] 한글 팩 (Language Packs) (write.2017-02-15)  Hit.83
17
JSP .do 확장자의 의미 (write.2013-08-21)인기글  Hit.6611
16
JSP PreparedStatement와 Statement의 성능 (write.2012-10-09)인기글  Hit.5996
열람중
14
JSP substring사용법 (write.2012-09-27)인기글  Hit.4639
13
JSP split 사용법 (write.2012-09-27)인기글  Hit.4180
12
JSP out.write() 와 out.print() (write.2012-09-27)인기글  Hit.4255
11
JSP 폼 처리(POST) (write.2012-09-27)인기글  Hit.4208
10
9
8
JSP euc-kr 한글 깨짐 (write.2012-05-22)인기글  Hit.13173
7
6
JSP Struts 의 한글처리 (write.2012-05-22)인기글  Hit.5144
5
4
3
2
JSP JSP에서의 include (update.2012-10-09)인기글  Hit.5678
1
JSP 프로그램 강제종료 JSP return; (write.2009-01-31)인기글  Hit.13586
게시물 검색
 
 
상호: 해피정닷컴 대표:정창용 사업자등록번호:119-05-36414 (08394) 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
전화: 070-7600-3500 팩스:02-865-3528 개인정보관리:정창용 mail@happyjung.com 에스크로확인
개인정보취급방침
COPYRIGHT 2001~2017 해피정닷컴. All rights reserved. 부가통신사업신고:서울체신청-1217 통신판매신고:2014-서울구로-0074
 
모바일 버전으로 보기