[SQL Injection] SQL 인젝션 해킹 방지를 위한 코딩 > 기술자료 | 해피정닷컴

[SQL Injection] SQL 인젝션 해킹 방지를 위한 코딩 > 기술자료

본문 바로가기

사이트 내 전체검색

[SQL Injection] SQL 인젝션 해킹 방지를 위한 코딩 > 기술자료

JSP [SQL Injection] SQL 인젝션 해킹 방지를 위한 코딩

페이지 정보


본문

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 2,634건 70 페이지
  • RSS
기술자료 목록
1254
그누보드   17878  2012-11-03 04:22 ~ 2018-12-18 02:42  
1253
그누보드   10714  2012-11-02 23:18  
1252
그누보드   11316  2012-11-01 22:20  
1251
그누보드   13266  2012-10-30 22:59  
1250
JavaScript   15695  2012-10-30 08:25  
1249
그누보드   12095  2012-10-29 23:37  
1248
그누보드   13434  2012-10-29 23:09  
1247
그누보드   12707  2012-10-29 21:09  
1246
PHP   19501  2012-10-28 23:34  
1245
그누보드   13736  2012-10-26 06:49  
1244
일반   13657  2012-10-25 20:51  
1243
그누보드   13512  2012-10-25 17:05 ~ 2020-10-15 13:42  
1242
MSSQL   16007  2012-10-23 09:07  
1241
ClassicASP   16555  2012-10-23 00:30 ~ 2014-08-13 00:00  
1240
HTML   24605  2012-10-20 21:42  
1239
그누보드   12767  2012-10-18 14:20 ~ 2014-12-11 00:00  
1238
JavaScript   29581  2012-10-17 21:33 ~ 2018-07-04 15:57  
1237
JSP   18791  2012-10-09 20:13  
열람
JSP   15289  2012-10-09 20:08  
1235
JavaScript   15463  2012-10-08 21:15  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.