목표가있냐~

블로그 이미지
내꺼
by 그래머
  • 498Total hit
  • 0Today hit
  • 0Yesterday hit

요즘 보안쪽 뉴스가 상당히 많이 나오내요.


옥션도 해킹 당하고 이리저리 분위가 참 어수선합니다.


그래서 요즘 가장 흔히 사용되는 해킹 관련 내용을 몇자 적어봅니다.


얼마전 모회사 사이트를 하나 만든적이 있습니다.


사이트를 만들어서 전달을 하니 그쪽에서 모의 해킹을 시도해 보더군요.


별로 그런 부분을 시경을 쓰지 못하고 작업을 한거라 몇군데 해킹에 취약한 부분이 있더군요


그중에 가장 많이 나왔던 부분이 sql injection 이 었습니다.


권한할당으로 테이블을 거드릴수는 없도록 처리 하였지만 어째든 소스 상에서 막아줄 부분은 다막아


달라는 권고가 오더군요.


그럼 간단하게 sql injection에 대하여 설명하고 막는 어떤식으로 막는지 알려드리겠습니다.



SQL Injection 데이터베이스로 전달되는 SQL Query 변경시키기 위해 Web Application에서 입력 받는 파라메터를 변조, 삽입하여 비정상적인 데이터베이스 접근을 시도하는 기술입니다. 일반적으로 Web Application에서 데이터베이스를 조작하는 권한이 해당 테이블을 삽입하고 삭제시킬 있기 때문에 SQL Injection 가능할 일어나는 파급 효과는 굉장히 있습니다. 또한 데이터베이스의 접근 권한이 필요이상으로 크다면, 데이터베이스 서비스를 중지시키거나 원하는 명령어를 실행시킬 있는 취약점이 있습니다. 이러한 공격방법은 거의 모든 관계형 데이터베이스 관리시스템(Oracle, MSSQL, MySQL, Informix, ETC) 적용될 있습니다. 이러한 공격 시도는 보통 단일 따옴표(Single Quote), 따옴표 (Double Quota), OR 시작하여 기존의 SQL Query 이어 공격자가 원하는 Query 삽입합니다.



간단하게 정리를 하면 위의 내용과 같습니다.


이것에 대한 처리 방법은 의외로 간단한편입니다.


1.파라메터가 숫자인 경우 ,숫자형인지 꼭 체크를 한다.

2.파람메터가 문자인 경우, 정규표현식을 통해 단일 따옴표를 치환합니다.

3.쿼리 빌드시, 문자열이 아닌 매개변수 쿼리를 사용하는 저장 프로시저로 구현합니다.

( '의 경우 \' 이나 "과 같이 단일 다옴표를 무력화 시킵니다. 그외에도 "나 or 그리고 sql문의 종료를 가리키는 ; 의 경우도 sql injection 을 일으킬 가능성이 있으므로 치환해야 합니다.)


4.Web Application과 연동되는 데이터베이스의 접근 권한을 최소화 합니다.

5.Internal Error(500) Page 에 대한 오류정보를 노출시키지 않아야 합니다.

6.그밖에 데이터베이스 쿼리에 사용되는 키워드를 검사합니다.


간단한예)

Simple Replace)

ASP Script

string id = Id.Text;

id = id.Replace(“’”,\’”);     single-quota ‘’ 으로 변환시킵니다.

VB Script

function escape( user_input )

          user_input = replace( user_input, “’”, \’”) 

          good_string = user_input

end function



Simple Replace)

String user_input = request.getParameter(id);

user_input = user_input.replaceAll(“’”, \’”);




Stored Procedure)

string id = Id.Text;

SqlConnection con = new SqlConnection("server=(local);

database=Test; uid=TestUser; pwd=guessWhat);

 

SqlCommand cmd = new SqlCommand("proc_GetName", con);

sql command type stored procedure 지정합니다

cmd.CommandType = CommandType.StoredProcedure;

파라메터 지정부분입니다.

cmd.Parameters.Add("@id", SqlDbType.VarChar, 10);

cmd.Parameters["@id"].Value = id;

proc_GetName 저장 프로시저를 사용하도록 아래와 같이 설정합니다

GRANT EXECUTE ON proc_GetName TO TestUser

SqlDataReader dataReader = cmd.ExecuteReader();



이정도 처리만 하면 기본적인 처리는 된거라고 보시면 됩니다.


이외적으로 XSS나 기타 여러가지 취약점을 공격하는 기법이 있지만 sql injection 부분은


위 내용을 참조하시면 어느정도 막아지리라 봅니다.


그럼 수고하세요. 

TRACKBACK 0 AND COMMENT 0
사용자 삽입 이미지
사용자 삽입 이미지
TRACKBACK 0 AND COMMENT 0

비만자가 꼭 읽어야 할 그릇된 상식

다이어트에 성공하기 위해서 이것만은 반드시 알아두십시오.

식사를 줄이면 체중을 줄일 수 있다. (X)

비만의 원인은 간식이지 정시(定時)의 식사는 아니다. (X)

체중이 증가하는 것은 수분이 지나치게 많기 때문이다. 그러므로 이뇨제를 먹으면 체중을 줄일 수 있다. (X)

정해진 양의 식사를 몇 년간 계속해서 먹을 경우 나이가 들면 체 중은 서서히 증가한다. (O)

살찐 사람이 일단 체중이 감소한 후 다시 증가하면 별로 걱정할 필요가 없다. (X)

다이어트를 엄격히 실행하면 체중은 매주 계속 감소한다. (X)

자연식(自然食)이 반드시 다이어트에 유효한 것은 아니다. (O)

다이어트를 하고 있다고 해서 비타민제를 매일 복용할 필요는 없다. (O)

전분은 가능한 한 섭취하지 않도록 해야 한다. (X)

술 1컵이나 2컵은 신경 쓰지 않아도 된다. 단순한 액체에 불과하니까. (X)

감자는 비만의 원인이 되지 않는다. (O)

그레이프푸르트는 몸안의 지방을 태워 버린다. (X)

전립(全粒)소맥 빵과 흰 빵의 칼로리는 거의 같다. (O)

쌀을 씻으면 칼로리가 감소한다. (X)

벌꿀은 설탕보다 우수한 감미료(甘味料)이다. (X)

야채는 칼로리가 적으므로 다이어트를 하고 있어도 얼마든지 먹어도 괜찮다. (X)

다이어트에 제일 좋은 것은 무어라 해도 탄수화물이 적은 식품이다. (X)

지나치게 살찐 갓난아이는 커진 후에도 비만해지기 쉽다. (O)

모유로 자란 갓난아이는 분유로 자란 갓난아이보다 비만이 되기 힘들다. (O)

아이에게는 과자를 먹게 하는 것이 좋다. 그렇지 않으면 먹기를 탐하는 사람이 되기 쉽다. (X)

케첩이나 마요네즈 등 조미료의 칼로리도 계산에 넣어야 한다. (O)

TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

분류 전체보기 (4)
나만의세상 (1)
우리의세상 (0)
웃기는세상 (1)
황당한세상 (0)
지식의세상 (2)

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2009/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

ARCHIVE

LINK