2011-01-25 2 views
2

나는 데이터베이스를 가진 ASP.NET MVC 웹 사이트를 운영하고 있습니다. 나는 각 노래가 얼마나 많은 페이지 뷰를 얻고 있는지 추적하고 싶다. 그러나 사람들이 하루에 여러 번 쳤을 때 나는 두 배로하고 싶지 않다. 사용자가 하루에 10 번 노래를 들으면 하루에 한 번만 카운트를 늘리고 싶습니다.웹 페이지 방문 횟수를 추적하고 악용 사례를 파악하는 가장 좋은 방법

처음에는 서버에서 Session이나 다른 것을 사용하여이를 추적하려고했으나 팜에 배치하면 세션이 서버에서 작동하고 사용자가 다른 서버를 공격 할 수 있으므로 제대로 작동하지 않습니다. . 쿠키를 사용하려고 생각했지만 다른 제안 사항이 있는지 알고 싶습니다. 쿠키를 사용하는 경우 정보를 저장하는 가장 좋은 방법은 무엇입니까

답변

1

쿠키가 익명 사용자 인 경우 쿠키가 최선의 방법입니다. 사용자가 세션 쿠키가 아닌지 확인해야합니다. 세션 쿠키는 사용자가 브라우저를 닫으면 만료됩니다.

+0

내 3 개의 브라우저에서 나를 보호하지 못합니다.) –

-1

http 모듈을 작성하고 IP와 노래를 데이터베이스에 저장하십시오.

당신이보고를 할 때,

select count(*) from T_SongAccess 
WHERE SONG_NAME = 'XY' 
AND IP='abc' 
and date_access between today:00:00:00 and today:23:59:49 

if count > 0 then 
    -- don't register, already accessed today 
else 
    -- register access 
end if 
+0

저와 10 명의 동료가 공통 IP로 사이트를 공격한다면 어떻게 될까요? –

+0

불운! 집에서 한 곡을 부르거나 직장에서 한 곡을 부르는 경우 (두 개의 다른 PC = 쿠키가 작동하지 않는 경우)에는 두 가지 IP/쿠키가 있지만 사용자와 노래는 동일하게됩니다. IP/쿠키 대신 사용자 UID를 갖도록 로그인을 필수로 설정할 수 있습니다. –

0

하나의 옵션은 ASP.NET 프로필이 될 수

select DISTINCT IP, SONG_NAME FROM T_SongAccess 

다른 방법을 사용하지만, 추한 데이터 저장 문제는 당신이 자신의 롤하려는 경우가 아니면이있다 거기에 끈질 기게.

쿠키는 일반적으로 올바른 방법이지만, 트릭은 봇의 개수를 세지 않는 것입니다.

또 다른 각도는 Google 도서에서 페이지를 훔쳐 비동기 자바 스크립트로 추적하는 것입니다. 그런 다음 방문자를 쿠키로 만들고 클라이언트 측에 ID를 푸시해야합니다 (또는 JS가 원하는 경우 JS에서 읽음). 그러나 그것은 일반적으로 자바 스크립트를 사용하지 않는 봇을 제거합니다. 아직.

관련 문제