2012-11-28 8 views
2

의견이나 기사에 대해 중복 된 투표 또는 평점을 어떻게 인정할 수 있습니까? 예를 들어 댓글을 올릴 때 그 댓글에서 더 이상 투표 할 수 없습니다.중복 된 익명 투표 방지

나는 사용자가 주석에 투표 할 수 있기를 원한다.이 증분은 db로 저장하려고하는데, 저장하는 유일한 것은 db의 긍정적이고 부정적인 투표의 증가이다. 모든 방문자는 의견을 투표 할 수 있으며 각 사람은 한 번만 투표 할 수 있습니다.

클라이언트 측 솔루션이 있습니까?

+0

자세한 내용과 일부 코드를 게시해야합니다. 이 투표는 어떻게 작동합니까? 세부 사항을 DB에 저장하고 있습니까? jquery 및/또는 쿠키에 선택 항목을 저장하고 있습니까? – ryadavilli

+0

제 생각에는 아직 코드가 없습니다 !!! 하지만 나는 사용자가 주석에 투표 할 수 있기를 원한다.이 증분은 db로 저장하려고하는데, 저장해야 할 유일한 것은 db의 긍정적이고 부정적인 투표의 증가이다. 모든 방문자는 의견을 투표 할 수 있으며 각 사람은 한 번만 투표 할 수 있습니다. –

답변

0

쿠키를 제한적으로 두는 것이 좋은 방법이라고 생각하지 않습니다. 당신은 그 (것)들을 맑게하고 다시 투표 할 수 있었다. 아마도 가장 좋은 방법은 등록 된 사용자 만 투표를 허용 한 다음 문서 당 저장 위치에 해당 사용자를 추적하는 것입니다. 누군가가 투표를 시도 할 때 기사의 '이 투표에 참여한 사용자'를 확인하고 참석자가 투표에 참여하지 않으면 투표가 진행되도록합니다.

+0

네 말이 맞지만 익명 사용자가 의견을 평가할 수 있기를 원합니다. 다시 투표하는 것은 중요하지 않습니다. –

1

사용자가 브라우저의 JavaScript를 비활성화하고 쿠키를 삭제하고 쉽게 알아볼 수 있습니다. 이것은 최상의 해결책이 아닙니다. 이 외에도 서버 측에서 사용자 IP 주소를 확인하는 것이 좋습니다.

+0

시크릿 모드를 사용하는 브라우저보다 훨씬 간단합니다. –

2

쿠키 또는 localStorage를 기반으로하는 클라이언트 측 솔루션은 솔직한 사용자에게 단일 브라우저를 제공합니다. 이는 대다수의 경우에 해당됩니다 (그렇게 할 수도 있습니다). 악의적 인 사람이나 기술적 인 지식을 가진 사람의 사기를 막기 위해 아무 것도하지 않기 때문에 서버의 신뢰 경계 (trust boundary)의 반대쪽에 체크를 포함시키고 자 할 것입니다.

확정 된 공격자 은 투표함을 채우지 만 평소 남용을 피할 수있는 몇 가지 옵션이 있습니다.

다른 사람들이 언급 한 것처럼 간단한 해결책은 IP 주소 당 하나의 표를 허용하는 것입니다. 끔찍한 생각은 아니지만이 토론에서 좋은 아이디어가 아닌 이유에 대해 알아보십시오. Limit 1 vote per IP Address? 합법적 인 사용자가 투표를 할 수 없으며 (개인 라우터를 공유하는 두 명의 룸메이트를 고려하십시오) 투표 용지가 멈추지 않습니다 집에서, 그리고 직장에서 다시). AOL과 같은 ISP를 고려할 때 훨씬 복잡해집니다 (대중의 지혜에 의하면, 적어도 이것이 여전히 사실이라고 가정하고 있습니다). 주소를 자주 재 지정하는 경우가 있습니다 (아마 사용자의 개인 정보를 보호하기 위해 표면 상으로는).

captcha가 필요할 수 있습니다. 이렇게하면 확인 된 전자 메일 주소가 필요한 것과 비슷한 수준의 보호 기능을 제공하며 사용자의 부담이 약간 줄어 듭니다. 물론 이러한 접근법 중 어느 것도 보증은 아닙니다. 도메인 이름을 소유 한 사람은 무한한 수의 고유 한 이메일 주소를 가지고 있으며 투표 결과에 영향을 미치는 데 수십 표의 투표가 충분하다면 공격자는 수십 건의 captcha 테스트를 수행하는 특허 만 필요합니다.

보다 정교한 솔루션은 사용자 계정을 요구하고, 악용 징후가 있는지주의 깊게보고, 사기성이있는 것으로 의심되는 계정을 금지하는 것입니다. 나는 그것이 당신이 할 준비가되어있는 것의 범위를 훨씬 뛰어 넘는 것이라고 생각합니다. 어쩌면 누군가가 그러한 일에 대한 무료 범용 구현을 발표하지 않았다면?

-1

확인. 또 다른 나쁜 습관. 익명의 유권자를 속일뿐입니다. 그가 처음 투표 할 때 - 현재 익명 사용자를 위해 추가 투표 액수를 가진 DB +1과 쿠키를 작성하십시오. 다시 투표 할 때 DB 양과 UI 업데이트가 아닌 쿠키 양에 +1을 추가하십시오. 따라서 사용자는 한 번 이상 투표를 할 수없고 자신의 쿠키 또는 다른 것을 지우려고하지 않는다는 것을 모릅니다. 물론 통계를 위해서만이 콘테스트에이 방법을 사용할 수는 없습니다. 그리고 귀하의 경우 등록 된 사용자에 대해이 쿠키를 설정하지 말고 표준 방법을 사용하여 투표를 확인하십시오.