[META-보안기초1] 글 작성시 유의 사항(로그인 사용자 쿠키 검증)
Legacy 2009. 6. 3. 14:57이제 막 시작하는 초보 웹개발자분들에게 도움이 될지는 모르겠으나.. ㅋ
1년차 후배들을 가르치기 위해서 한번 시작해 보자..
일반적인 게시판을 예로 들어서 진행 하겠습니다.
1. 글 작성
로그인 유무 체크
우선 페이지 글 작성 페이지 접근 시 쿠키 정보를 읽어서 로그인 여부 값을 할당
isLogin
loginValid
등의 변수로 임의 세팅 하겠죠.
값 세팅 또는 페이지를 다이나믹 하게 구분해서 보여 줄 수도 있구요.
if ( isLogin ) {
// 로그인 했을 때 보여줄 화면
} else {
// 로그인 하지 않았을 때 보여줄 화면
}
이제 글 포스팅으로 넘어 가 보죠.
ㄱ. 로그인 인증 쿠키 유효성 체크 (login check)
ㄱ.1 captcha 라는 걸 이용해서 포스팅 시 유효성을 한번 더 확인 할 수도 있으나 좀 사용자들을 불편하게 하죠.
ㄴ. 사용자가 입력한 값 체크 (input validation check)
ㄴ.1. input validation
ㄴ.2. spam filtering
ㄴ.3. sql injection
ㄴ.4. xss
ㄴ.5 기타 (보통 위에 4가지 정도를 많이 하죠..)
ㄷ. 글 등록
어째 로그인 사용자 쿠키 검증 이라 해놓고는 좀 포인트가 많이 벗어났내요.
암튼..
쿠키는 조작이 가능 하죠.
쉽게 얘기 해서 브라우저에 쿠키를 생성해 놓고.. input parameters 에 대해서 값을 조작해서 posting target url 로 변조된 값들을 넘기게 되면 해당 서비스 페이지에서 작성할 필요 없이 쉽게 포스팅을 할 수가 있습니다.
이건 아주 초보적인 거죠...
쿠키나 세션 기반의 인증을 사용하는 서비스들에 대해서는 참 취약한 부분이 아닐 수 없는데요.
우찌 되었건 어떤 비즈니스 로직이던 본인 유무 확인에 대해서는 확실히 검증을 하고 작성을 해야 한다를 꼭 기억 하셔야 합니다.
위에서 언급된 input validation, spam filter, sql injection, xss 등에 대해서는 따로 정리를 해보던가 하지요..
워낙에 많이 거론된 주제라서 제가 꼭 쓰지 않더라도 구글링만 잘 하면.. 다 나온다는.. ^^;
구글링
1년차 후배들을 가르치기 위해서 한번 시작해 보자..
일반적인 게시판을 예로 들어서 진행 하겠습니다.
1. 글 작성
로그인 유무 체크
우선 페이지 글 작성 페이지 접근 시 쿠키 정보를 읽어서 로그인 여부 값을 할당
isLogin
loginValid
등의 변수로 임의 세팅 하겠죠.
값 세팅 또는 페이지를 다이나믹 하게 구분해서 보여 줄 수도 있구요.
if ( isLogin ) {
// 로그인 했을 때 보여줄 화면
} else {
// 로그인 하지 않았을 때 보여줄 화면
}
이제 글 포스팅으로 넘어 가 보죠.
ㄱ. 로그인 인증 쿠키 유효성 체크 (login check)
ㄱ.1 captcha 라는 걸 이용해서 포스팅 시 유효성을 한번 더 확인 할 수도 있으나 좀 사용자들을 불편하게 하죠.
ㄴ. 사용자가 입력한 값 체크 (input validation check)
ㄴ.1. input validation
ㄴ.2. spam filtering
ㄴ.3. sql injection
ㄴ.4. xss
ㄴ.5 기타 (보통 위에 4가지 정도를 많이 하죠..)
ㄷ. 글 등록
어째 로그인 사용자 쿠키 검증 이라 해놓고는 좀 포인트가 많이 벗어났내요.
암튼..
쿠키는 조작이 가능 하죠.
쉽게 얘기 해서 브라우저에 쿠키를 생성해 놓고.. input parameters 에 대해서 값을 조작해서 posting target url 로 변조된 값들을 넘기게 되면 해당 서비스 페이지에서 작성할 필요 없이 쉽게 포스팅을 할 수가 있습니다.
이건 아주 초보적인 거죠...
쿠키나 세션 기반의 인증을 사용하는 서비스들에 대해서는 참 취약한 부분이 아닐 수 없는데요.
우찌 되었건 어떤 비즈니스 로직이던 본인 유무 확인에 대해서는 확실히 검증을 하고 작성을 해야 한다를 꼭 기억 하셔야 합니다.
위에서 언급된 input validation, spam filter, sql injection, xss 등에 대해서는 따로 정리를 해보던가 하지요..
워낙에 많이 거론된 주제라서 제가 꼭 쓰지 않더라도 구글링만 잘 하면.. 다 나온다는.. ^^;
구글링
- CAPTCHA : http://www.google.com/search?q=captcha&rls=com.microsoft:ko:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7GGIT_ko
- INPUT VALIDATION : http://www.google.com/search?hl=ko&rls=com.microsoft%3Ako%3AIE-SearchBox&rlz=1I7GGIT_ko&q=input+validation&lr=
- SPAM FILTER 는 구글링 하니까.. 웹서비스를 위한 내용이 바로 나오지는 않내요. 이건 제가 예전에 만들었던 플랫폼을 가지고 살짝 설명 드리기로 하지요.
- SQL INJECTION : http://www.google.com/search?hl=ko&rls=com.microsoft%3Ako%3AIE-SearchBox&rlz=1I7GGIT_ko&q=sql+injection&lr=
- XSS : http://www.google.com/search?hl=ko&rls=com.microsoft%3Ako%3AIE-SearchBox&rlz=1I7GGIT_ko&q=xss&lr=