개발 Q&A

제목 파라미터 변조에 대한 ci 대응법이 있을까요?
카테고리 PHP
글쓴이 늅b 작성시각 2020/01/06 10:08:17
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 13674   RSS

안녕하세요. 

 

한 1년정도 가끔씩 서버에 부하가 걸려 서버가 멈추는 현상이 가끔 있었는데.

업체측으로 문제의 쿼리를 받았는데, 정상적인 쿼리가 아니었습니다. 해당쿼리 중 

 

일반적으로 조건이

AND A.NEW_CATEGORY_CODE LIKE '008%'

이런식으로 끝나야 하는 쿼리인데 문제의 쿼리는

AND A.NEW_CATEGORY_CODE LIKE '-1' OR 2+353-353-1=0+0+0+1 or 'IdhsR72V'='%'

이런식으로 돌고 있더라구요.

 

해당 문제는 Like조건이 아니어도 get파라미터가 있기만 하다면 예를 들어

요청이 ?param=xxx 인 것을 ?param=-1' OR 2+353-353-1=0+0+0+1 or 'IdhsR72V'='% (정확히 이 문구인지는 모르겠습니다만..)

 

이런식으로 쿼리가 돌아간다면 DB테이블 전체를 셀렉트 하게되어

현재 저같은 경우는 조인등을 통해 임시테이블 용량이 16GB까지 사용하고 있습니다.

메모리 사용이 많아지다 보니 쌓이고 쌓여 어느순간 서비스가 죽게되고있습니다.

 

제가 궁금한 것은 xss, csrf 같은 옵션으로 위와 같은 변조를 막는 옵션이 존재하는지 입니다.

정확한 검색어를 몰라 xss, csrf같은 옵션들을 급하게 사용하도록 변경해 두었는데

 

파라미터 변조같은 경우 or가 문제가 된다하여 or를 다 막는다면 파라미터 중

param=hohor 이런 경우도 함께 막힐 것 같고.. 

해결 방법을 아시는분이 계시다면 도와주세요..ㅠ

 

그리고 새해 복 많이 받으세요 ㅎㅎ

 

 다음글 트랜잭션 반복문 사용시 문제 (8)
 이전글 이클립스 쓰시는분들 질문드립니다.

댓글

변종원(웅파) / 2020/01/06 10:16:29 / 추천 0

xss, sql injection 방지 등  ci에 존재합니다. 

http://www.ciboard.co.kr/user_guide/kr/database/queries.html#escaping-queries

xss 적용하시고 쿼리 바인딩을 하시면 escape가 자동 적용되고 일반적인 사용방법에선 위 링크로 적용하시면 보안강화할 수 있습니다.

늅b / 2020/01/06 10:22:20 / 추천 0

답글 감사드립니다 웅파님 새해 복 많이 받으세요~!

$sql = "SELECT id FROM table WHERE column LIKE '%" .
    $this->db->escape_like_str($search)."%' ESCAPE '!' 
   AND column2 = ".$this->db->escape($title);

 

위와 같이 사용하란 것으로 이해했는데, 한번 테스트 진행 해보겠습니다

늅b / 2020/01/07 15:49:41 / 추천 0

잘 해결되었습니다.

한 5년동안 ci쓰면서 쿼리바인딩이 왜 필요한지도 몰랐는데..

꼭 써야겠네요! 감사합니다~!