2014-01-10 3 views
0

현재 Redis를 사용하여 페이지를로드 할 때마다 조회수를 저장하고 있습니다. 그것은 환상적으로 작동하지만 내 유일한 걱정은 그것이 학대 것입니다. 사용자가 내 사이트에 로그인하면 악용 사례가 무효화되도록 (아직 Redis가 추적 한) 스레드를 보지 않은 경우에만보기 카운터가 업데이트됩니다.조회수 남용을 방지하는 가장 좋은 방법은 무엇입니까?

내 문제는 계정이없는 사용자에게 있습니다. 누군가가 약간의 내용을 만들었을 때 페이지가로드 될 때마다 조회수를 업데이트하도록하면 조회수를 늘리고 싶을만큼 로그 아웃하고 페이지를 새로 고칠 수 있습니다. 내 첫 번째 생각은 세션 쿠키 (세션 쿠키를 통해 로그인 한 사용자를 이미 추적 함)를 통해 모든 비 계정 사용자를 식별했지만 누군가 해당 쿠키를 지우면 다시 쓸모 없게 렌더링됩니다. 또 다른 생각은 IP 주소이지만 동적 IP 주소를 통해서는 그다지 신뢰할 수 없습니다.

제 질문은 알 수없는 사용자의 조회수를 추적하는 가장 신뢰할 수있는 방법은 무엇입니까?

+1

사용자 ip/login을 기반으로 쿠키를 만들 수 있습니다. 이렇게하면 인증 된 사용자는 항상 동일한 쿠키를 갖게됩니다. ip adress md5 (salt + user | anon + ip) 뒤에 여러 사용자가있는 경우 일부 사용자가 누락 될 수 있습니다. – gawel

+0

단순함을위한 가장 좋은 절충 인 것 같습니다. 감사! – sheppardzw

답변

1

조회수 추적 세계에 오신 것을 환영합니다!

몇 가지 영업 비밀을 알려줍니다.

원하는 것은 아마도 픽셀 추적기입니다.

픽셀 추적기는 요청한 시간을 기록하는 것 외에는 아무것도 수행하지 않는 1x1 픽셀을 제공하는 서비스입니다. 따라서 스레드를 방문한 사람을 추적하려고한다고하면 스레드 이름 sha512 해시를 만들고 sha512(thread_name) 해시를 얻을 수 있습니다. 그런 다음이 해시 요청을 웹 서버에서 픽셀이

/px/<sha512hash>.gif 

는 그런 다음 데이터베이스에이 요청을 삽입 할 수 페이지 렌더링, 다음 시간을 다음과 같이 제목을 SHA512, 당신은 다음 실현, 픽셀을 요청 이 사용자는 이미이 제목의 픽셀을 게재했습니다. 요청을 무시하면보기 카운터가 증가하지 않습니다.

+0

@gawel은 좋은 대답을했습니다. 나는 100 %의 정확성을 위해 단순성을 다소 상쇄 할 것입니다. 궁금한 점이 있지만 .gif를 캐싱하는 브라우저에 의존하지 않습니까? – sheppardzw

+0

@ d0ctor 자원 서버 측에 대한 요청을 기록합니다. –

+0

나는 그것을 얻고있는 것처럼 보이지 않는다. .. 유감스럽게 생각하는 haha. 리소스에 대한 요청을 로그합니다. 처리기가/viewcount라고 가정 해 봅시다. passlib에서 말한 SHA-512 해시는 매번 무작위로 나타납니다. 매번 정적으로 만들더라도 한 손님이 카운터를 증가시킬 수 있습니다. IP 주소가 안정적이지 않으면 게스트별로 어떻게 추적 할 수 있습니까? 내가 실행할 수있는 유일한 방법은 각 게스트에 대한 임의의 쿠키이며 쿠키를 지우지 않기를 바랄뿐입니다. – sheppardzw

관련 문제