TIP게시판

제목 보안 참고
글쓴이 변종원(웅파) 작성시각 2010/04/08 14:17:57
댓글 : 3 추천 : 0 스크랩 : 1 조회수 : 13321   RSS
y사 프로젝트를 진행하다보니 몇가지 보안부분에서 평상시에 지키면 좋겠다 하는 부분이 있어서 글을 올립니다.

xss와 sql injection은 codeigniter가 기본적으로 처리를 해주기 때문에 패스하고..

폼전송시 변조방지 부분에 대해 보면

보통 뷰에서 폼전송시 자기자신 컨트롤러나 다른 컨트롤러로 결과를 보내는데

ci의 폼검증을 써서 검증이 완료됐을때 처리와 그렇지 않을때의 처리를 하거나

히든필드를 넘겨서 그 필드값이 있을 경우(post데이터가 있는 경우)에 db입력등의 처리를 합니다.

위는 보편적인 상황입니다. 로봇의 경우 폼 action 주소와 필드내용을 만들어서 action 주소로 다이렉트로

post를 보내 스팸글등을 저장을 하죠. 그걸 방지하기 위해 y사에서는 get_crumb()이라는 함수와 check_crumb()이라는 함수를

사용합니다.

폼전송하는 페이지에서 get_crumb()으로 현재 페이지에 해당하는 암호화변수를 생성하여 hidden으로 넘기고

컨트롤러에서 check_crumb($this->input-post('crumb'))으로 체크를 하여 일치가 되지 않으면 쓰기나 기타 액션을

하지 못하도록 합니다. 특별히 새로운 개념은 아니지만 기존에는 글쓰기 페이지에서 captcha를 이용하여 체크번호를

이미지로 만들고 그 번호를 입력하여 컨트롤러에서 비교처리를 하였습니다.

그런 일련의 과정을 함수와 암호화로 처리하는거죠. 물론 100% 막을 수는 없습니다. 로봇이 패턴을 찾아내서

적용을 할테고 또 막고... 계속 순환... ^^;

그래도 없는 것 보다는 낫겠죠? ^^
 다음글 Editplus를 대신할만 에디터 Sublme Text (9)
 이전글 scaffolding을 하위디렉토리에서도 사용하기 (2)

댓글

케이든 / 2010/04/08 16:17:00 / 추천 0
폼페이지에서 플래쉬 세션 데이터로 스트링을 만들어 히든으로 보낸후

받는쪽에서 히든값과 플래쉬 세션데이터를 비교하는건 어떨까요?
헛발이 / 2010/04/09 07:37:47 / 추천 0
음... 그렇군요... 그런것도 다 해 줘야 하는군요...
근데 케이든님 생각이 만드는 과정에선 좀 쉬워 보이는군요 ㅋㅋ

함 따라 해 봐야 겠어요 ㅋ
변종원(웅파) / 2010/04/09 10:26:55 / 추천 0

네. 케이든님 말씀처럼 해도 됩니다.
y사에서는 변조가능성이 있는 부분을 배제하려고 함수를 쓰는 거죠. ^^