외국에서의 접속 방식 변경 공지

김정균의 이미지

조만간 외국에서 접근을 할 경우 약간의 제한이 가해질 예정입니다. 이는 외국발 봇에 의한 스팸 등록과 유령 유저 가입을 막기 위한 일련의 조치 입니다.

외국에서 접근을 하게 되면, 인증 페이지가 뜨게 되며, 간단한 수식을 풀어서 30일간의 access cookie를 획득하신 후에 동일하게 KLDP를 이용하실 수 있습니다. cookie가 만료 되거나 또는 cookie가 유실이 될 경우에는 이 인증을 다시 하셔야 합니다.

불편하시게 되는 부분에 대해서는 충분히 공감을 하지만, 스팸을 봐야 하거나, 또 관리자 입장에서 스팸을 지우는 일이 너무 힘들어 이를 실행해 보려 합니다.

현재 예상되는 문제로는 아래와 같습니다.

1. 아직 한국 IP로 분류되지 못한 IP로 접근을 했을 경우 한국에서 접근을 해도 인증페이지가 뜰 수 있습니다. (현재 매월 4일에 ip database를 갱신하고 있습니다.)
2. 외국 검색봇 (google, bing등..) 의 접근을 어떻게 할 것인지..
3. RSS reader의 경우 cookie 획득 방법.
4. IPv6 client들이 생기면.. 어떻게? (현재 kldp는 ipv6주소가 없으므로 ip6v로 직접 들어올 수는 없는데..)

정도가 생각이 납니다. 2-3번의 경우에는 예외 리스트로 처리를 하려고 하는데, 혹시 관련된 사항이 있으신 분들은 User-Agent나 프로그램 이름을 남겨 주시면 가능한 예외 처리를 해 드리도록 하겠습니다.

관리자 주제: 

댓글

김정균의 이미지

외국에서의 접근에 해당 사항이 적용이 되었습니다.

현재, Google, Yahoo, MS의 IP에서 접근하는 경우에만 예외 처리가 되어 있습니다. 이 외에 요청에 의하여 User-Agent나 static IP로 예외 처리를 해 드릴 수 있습니다.

그리고, 많이 불편하다면 철회 될 수도 있습니다. (예전 HTTP/1.0을 막았을 때 처럼.. 말이죠.)

blueball81의 이미지

30일간이라고 하신 거 같은데, 생성된 쿠키가 브라우저 종료시까지로 설정되는 것 같습니다.
Ubuntu에서 Chrome 사용중이며, 미국입니다.
확인 부탁드리겠습니다.

김정균의 이미지

흠 쿠키 생성은 다음과 같이 하고 있습니다.

    burnCookie: function () {
        var today = new Date ();
        var expires = new Date ();
        expires.setTime (today.getTime () + (1000 * 60 * 60 * 24 * 30));
        cookie_val =
            'kldpForeign=' + expires.toGMTString() +
            ';path=/' +
            ';expire=' + expires.toGMTString();
        if ( document.location.protocol == 'https:' ) {
            cookie_val += ';secure';
        }
        document.cookie = cookie_val;
        window.location.reload(true);
    },

잘못된 것이 있을까요? 제가 java script를 잘하는 편이 아니라서..

익명 사용자의 이미지

저도 매번 브라우저 새로 띄울 때마다 물어보네요. 파이어폭스 사용하고 프랑스입니다.

alfalf의 이미지

저도 매번 브라우저 띄울때마다 물어봅니다.

미국이고 파이어폭스와 크롬 모두에서 같은 증상이 나타납니다.

김정균의 이미지

코드에 오타가 있었네요. 확실히 코드를 올리니 제가 못찾는 걸 찾아 주시네요. 일단 제 브라우저에서 쿠키가 유지되는 것은 확인을 했습니다. 안되면 계속 올려 주세요.

sisuc의 이미지

쿠키 생성은 jquery cookie를 사용하면 편리할거라고 생각해요.

$.cookie('the_cookie', value); //cookie를 셋트
$.cookie('the_cookie'); //cookie취득
$.cookie('the_cookie', value, { expires: 30 }); //쿠키의 유효기간을 30일간으로 지정
$.cookie('the_cookie', '', { expires: -1 }); //cookie 삭제
$.cookie('the_cookie', null); //cookie 삭제

저는 답을 입력한 후,

한참을 기달려도 get cookie 가 안떠서 계속 기달리다가

혹시 엔터 쳐야되나? 해서 엔터를 쳤더니 나오더군요..

처음오시는 분들은 헷갈리실듯 합니다. 버튼이나 "엔터를치세요" 라고 표시해야할듯 합니다.

그리고 유효기간이 30일이면,,

봇이 한번만 쿠키 취득을 하면 30일간은 자유로운거 같은데..

효과를 볼것인지..흠..ㅎㅎ;

위대한 한글

김정균의 이미지

네 해당 문구를 추가했습니다.

이걸 뚫고 들어오는 봇이 있다면.. 또 다른 대처를 해야죠. 어떤 방식이라도 완전하게 막을 수는 없을테니까요. 그때그때 잘.,, :-)

김정균의 이미지

흠.. cookie expire 문제 해결 하고 나니, 더 이상 이슈가 없어 보이네요. issue가 있거나 개선점이 있으시면 쓰레드 이어 주세요.

한 4일 정도 되었는데, spam성 등록은 4건 정도 있었고, bot에 의한 유저 가입은 100% 차단이 된 것 같습니다.

speed-racer의 이미지

글을 읽는데에도 쿠키인증이 필요한 것인가요 아니면 글 등록이나 유저 가입시에만 쿠키인증이 필요한가요? 검색봇과 RSS리더를 예외처리한다는 부분을 보면 전자일 것 같은데, 후자라면 예외처리 코드를 넣을 필요가 없어 더 간단한 관리방법 아닐까요?

김정균의 이미지

후자로 하려면 drupal을 분석 해야 하는 어려움이 있습니다. 저는 drupal code를 본 적이 없어서.. 그리고 kldp서버에는 drupal만 있지 않습니다. 그래서 php의 preappend에 추가를 해 놓은 것입니다. 그리고 실제로 그렇게 무겁지도 않고요.

김정균의 이미지

tor exit router를 막기 위해서 rule을 조금 변경 했습니다. cookie에 국가 정보를 기록하고, 이 정보와 접속한 IP의 국가 정보가 동일하지 않으면 계속 쿠키 획득 페이지가 뜨게 됩니다. (tor exit router 환경이 없어서 정말 되는지는 확인 못했습니다.)

tor exit router를 사용하실 경우 해제 하시고 접속을 하시면 되며, 이 경우 기존의 국가 정보가 남아 있을 것이기 때문에 reload를 한번 더 해 주시면 정상적으로 사용이 가능 할 겁니다. (아마도.. ^^)

댓글 달기